{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/asap/asap.js","node_modules/classnames/index.js","node_modules/core-js/modules/_a-function.js","node_modules/core-js/modules/_add-to-unscopables.js","node_modules/core-js/modules/_an-instance.js","node_modules/core-js/modules/_an-object.js","node_modules/core-js/modules/_array-copy-within.js","node_modules/core-js/modules/_array-fill.js","node_modules/core-js/modules/_array-includes.js","node_modules/core-js/modules/_array-methods.js","node_modules/core-js/modules/_array-species-constructor.js","node_modules/core-js/modules/_array-species-create.js","node_modules/core-js/modules/_bind.js","node_modules/core-js/modules/_classof.js","node_modules/core-js/modules/_cof.js","node_modules/core-js/modules/_collection-strong.js","node_modules/core-js/modules/_collection-weak.js","node_modules/core-js/modules/_collection.js","node_modules/core-js/modules/_core.js","node_modules/core-js/modules/_create-property.js","node_modules/core-js/modules/_ctx.js","node_modules/core-js/modules/_defined.js","node_modules/core-js/modules/_descriptors.js","node_modules/core-js/modules/_dom-create.js","node_modules/core-js/modules/_enum-bug-keys.js","node_modules/core-js/modules/_enum-keys.js","node_modules/core-js/modules/_export.js","node_modules/core-js/modules/_fails-is-regexp.js","node_modules/core-js/modules/_fails.js","node_modules/core-js/modules/_fix-re-wks.js","node_modules/core-js/modules/_flags.js","node_modules/core-js/modules/_for-of.js","node_modules/core-js/modules/_global.js","node_modules/core-js/modules/_has.js","node_modules/core-js/modules/_hide.js","node_modules/core-js/modules/_html.js","node_modules/core-js/modules/_ie8-dom-define.js","node_modules/core-js/modules/_inherit-if-required.js","node_modules/core-js/modules/_invoke.js","node_modules/core-js/modules/_iobject.js","node_modules/core-js/modules/_is-array-iter.js","node_modules/core-js/modules/_is-array.js","node_modules/core-js/modules/_is-integer.js","node_modules/core-js/modules/_is-object.js","node_modules/core-js/modules/_is-regexp.js","node_modules/core-js/modules/_iter-call.js","node_modules/core-js/modules/_iter-create.js","node_modules/core-js/modules/_iter-define.js","node_modules/core-js/modules/_iter-detect.js","node_modules/core-js/modules/_iter-step.js","node_modules/core-js/modules/_iterators.js","node_modules/core-js/modules/_library.js","node_modules/core-js/modules/_math-expm1.js","node_modules/core-js/modules/_math-fround.js","node_modules/core-js/modules/_math-log1p.js","node_modules/core-js/modules/_math-sign.js","node_modules/core-js/modules/_meta.js","node_modules/core-js/modules/_microtask.js","node_modules/core-js/modules/_new-promise-capability.js","node_modules/core-js/modules/_object-assign.js","node_modules/core-js/modules/_object-create.js","node_modules/core-js/modules/_object-dp.js","node_modules/core-js/modules/_object-dps.js","node_modules/core-js/modules/_object-gopd.js","node_modules/core-js/modules/_object-gopn-ext.js","node_modules/core-js/modules/_object-gopn.js","node_modules/core-js/modules/_object-gops.js","node_modules/core-js/modules/_object-gpo.js","node_modules/core-js/modules/_object-keys-internal.js","node_modules/core-js/modules/_object-keys.js","node_modules/core-js/modules/_object-pie.js","node_modules/core-js/modules/_object-to-array.js","node_modules/core-js/modules/_own-keys.js","node_modules/core-js/modules/_perform.js","node_modules/core-js/modules/_promise-resolve.js","node_modules/core-js/modules/_property-desc.js","node_modules/core-js/modules/_redefine-all.js","node_modules/core-js/modules/_redefine.js","node_modules/core-js/modules/_same-value.js","node_modules/core-js/modules/_set-proto.js","node_modules/core-js/modules/_set-species.js","node_modules/core-js/modules/_set-to-string-tag.js","node_modules/core-js/modules/_shared-key.js","node_modules/core-js/modules/_shared.js","node_modules/core-js/modules/_species-constructor.js","node_modules/core-js/modules/_string-at.js","node_modules/core-js/modules/_string-context.js","node_modules/core-js/modules/_string-pad.js","node_modules/core-js/modules/_string-repeat.js","node_modules/core-js/modules/_task.js","node_modules/core-js/modules/_to-absolute-index.js","node_modules/core-js/modules/_to-index.js","node_modules/core-js/modules/_to-integer.js","node_modules/core-js/modules/_to-iobject.js","node_modules/core-js/modules/_to-length.js","node_modules/core-js/modules/_to-object.js","node_modules/core-js/modules/_to-primitive.js","node_modules/core-js/modules/_typed-array.js","node_modules/core-js/modules/_typed-buffer.js","node_modules/core-js/modules/_typed.js","node_modules/core-js/modules/_uid.js","node_modules/core-js/modules/_user-agent.js","node_modules/core-js/modules/_validate-collection.js","node_modules/core-js/modules/_wks-define.js","node_modules/core-js/modules/_wks-ext.js","node_modules/core-js/modules/_wks.js","node_modules/core-js/modules/core.get-iterator-method.js","node_modules/core-js/modules/es6.array.copy-within.js","node_modules/core-js/modules/es6.array.fill.js","node_modules/core-js/modules/es6.array.find-index.js","node_modules/core-js/modules/es6.array.find.js","node_modules/core-js/modules/es6.array.from.js","node_modules/core-js/modules/es6.array.iterator.js","node_modules/core-js/modules/es6.array.of.js","node_modules/core-js/modules/es6.function.name.js","node_modules/core-js/modules/es6.map.js","node_modules/core-js/modules/es6.math.acosh.js","node_modules/core-js/modules/es6.math.asinh.js","node_modules/core-js/modules/es6.math.atanh.js","node_modules/core-js/modules/es6.math.cbrt.js","node_modules/core-js/modules/es6.math.clz32.js","node_modules/core-js/modules/es6.math.cosh.js","node_modules/core-js/modules/es6.math.expm1.js","node_modules/core-js/modules/es6.math.fround.js","node_modules/core-js/modules/es6.math.hypot.js","node_modules/core-js/modules/es6.math.imul.js","node_modules/core-js/modules/es6.math.log10.js","node_modules/core-js/modules/es6.math.log1p.js","node_modules/core-js/modules/es6.math.log2.js","node_modules/core-js/modules/es6.math.sign.js","node_modules/core-js/modules/es6.math.sinh.js","node_modules/core-js/modules/es6.math.tanh.js","node_modules/core-js/modules/es6.math.trunc.js","node_modules/core-js/modules/es6.number.epsilon.js","node_modules/core-js/modules/es6.number.is-finite.js","node_modules/core-js/modules/es6.number.is-integer.js","node_modules/core-js/modules/es6.number.is-nan.js","node_modules/core-js/modules/es6.number.is-safe-integer.js","node_modules/core-js/modules/es6.number.max-safe-integer.js","node_modules/core-js/modules/es6.number.min-safe-integer.js","node_modules/core-js/modules/es6.object.assign.js","node_modules/core-js/modules/es6.object.is.js","node_modules/core-js/modules/es6.object.set-prototype-of.js","node_modules/core-js/modules/es6.promise.js","node_modules/core-js/modules/es6.reflect.apply.js","node_modules/core-js/modules/es6.reflect.construct.js","node_modules/core-js/modules/es6.reflect.define-property.js","node_modules/core-js/modules/es6.reflect.delete-property.js","node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","node_modules/core-js/modules/es6.reflect.get-prototype-of.js","node_modules/core-js/modules/es6.reflect.get.js","node_modules/core-js/modules/es6.reflect.has.js","node_modules/core-js/modules/es6.reflect.is-extensible.js","node_modules/core-js/modules/es6.reflect.own-keys.js","node_modules/core-js/modules/es6.reflect.prevent-extensions.js","node_modules/core-js/modules/es6.reflect.set-prototype-of.js","node_modules/core-js/modules/es6.reflect.set.js","node_modules/core-js/modules/es6.regexp.flags.js","node_modules/core-js/modules/es6.regexp.match.js","node_modules/core-js/modules/es6.regexp.replace.js","node_modules/core-js/modules/es6.regexp.search.js","node_modules/core-js/modules/es6.regexp.split.js","node_modules/core-js/modules/es6.set.js","node_modules/core-js/modules/es6.string.code-point-at.js","node_modules/core-js/modules/es6.string.ends-with.js","node_modules/core-js/modules/es6.string.from-code-point.js","node_modules/core-js/modules/es6.string.includes.js","node_modules/core-js/modules/es6.string.raw.js","node_modules/core-js/modules/es6.string.repeat.js","node_modules/core-js/modules/es6.string.starts-with.js","node_modules/core-js/modules/es6.symbol.js","node_modules/core-js/modules/es6.typed.array-buffer.js","node_modules/core-js/modules/es6.typed.float32-array.js","node_modules/core-js/modules/es6.typed.float64-array.js","node_modules/core-js/modules/es6.typed.int16-array.js","node_modules/core-js/modules/es6.typed.int32-array.js","node_modules/core-js/modules/es6.typed.int8-array.js","node_modules/core-js/modules/es6.typed.uint16-array.js","node_modules/core-js/modules/es6.typed.uint32-array.js","node_modules/core-js/modules/es6.typed.uint8-array.js","node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","node_modules/core-js/modules/es6.weak-map.js","node_modules/core-js/modules/es6.weak-set.js","node_modules/core-js/modules/es7.array.includes.js","node_modules/core-js/modules/es7.object.entries.js","node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","node_modules/core-js/modules/es7.object.values.js","node_modules/core-js/modules/es7.string.pad-end.js","node_modules/core-js/modules/es7.string.pad-start.js","node_modules/core-js/modules/web.dom.iterable.js","node_modules/core-js/modules/web.immediate.js","node_modules/core-js/modules/web.timers.js","node_modules/filesaver.js/FileSaver.js","node_modules/font-face-observer/src/dom.js","node_modules/font-face-observer/src/observer.js","node_modules/font-face-observer/src/ruler.js","node_modules/jsonschema/lib/attribute.js","node_modules/jsonschema/lib/helpers.js","node_modules/jsonschema/lib/index.js","node_modules/jsonschema/lib/validator.js","node_modules/lodash/_DataView.js","node_modules/lodash/_Hash.js","node_modules/lodash/_LazyWrapper.js","node_modules/lodash/_ListCache.js","node_modules/lodash/_LodashWrapper.js","node_modules/lodash/_Map.js","node_modules/lodash/_MapCache.js","node_modules/lodash/_Promise.js","node_modules/lodash/_Set.js","node_modules/lodash/_SetCache.js","node_modules/lodash/_Stack.js","node_modules/lodash/_Symbol.js","node_modules/lodash/_Uint8Array.js","node_modules/lodash/_WeakMap.js","node_modules/lodash/_addMapEntry.js","node_modules/lodash/_addSetEntry.js","node_modules/lodash/_apply.js","node_modules/lodash/_arrayEach.js","node_modules/lodash/_arrayFilter.js","node_modules/lodash/_arrayIncludes.js","node_modules/lodash/_arrayIncludesWith.js","node_modules/lodash/_arrayLikeKeys.js","node_modules/lodash/_arrayMap.js","node_modules/lodash/_arrayPush.js","node_modules/lodash/_arrayReduce.js","node_modules/lodash/_arraySome.js","node_modules/lodash/_asciiToArray.js","node_modules/lodash/_assignValue.js","node_modules/lodash/_assocIndexOf.js","node_modules/lodash/_baseAssign.js","node_modules/lodash/_baseAssignIn.js","node_modules/lodash/_baseAssignValue.js","node_modules/lodash/_baseClone.js","node_modules/lodash/_baseCreate.js","node_modules/lodash/_baseDifference.js","node_modules/lodash/_baseEach.js","node_modules/lodash/_baseFilter.js","node_modules/lodash/_baseFindIndex.js","node_modules/lodash/_baseFlatten.js","node_modules/lodash/_baseFor.js","node_modules/lodash/_baseForOwn.js","node_modules/lodash/_baseGet.js","node_modules/lodash/_baseGetAllKeys.js","node_modules/lodash/_baseGetTag.js","node_modules/lodash/_baseHasIn.js","node_modules/lodash/_baseInRange.js","node_modules/lodash/_baseIndexOf.js","node_modules/lodash/_baseIsArguments.js","node_modules/lodash/_baseIsEqual.js","node_modules/lodash/_baseIsEqualDeep.js","node_modules/lodash/_baseIsMatch.js","node_modules/lodash/_baseIsNaN.js","node_modules/lodash/_baseIsNative.js","node_modules/lodash/_baseIsTypedArray.js","node_modules/lodash/_baseIteratee.js","node_modules/lodash/_baseKeys.js","node_modules/lodash/_baseKeysIn.js","node_modules/lodash/_baseLodash.js","node_modules/lodash/_baseMatches.js","node_modules/lodash/_baseMatchesProperty.js","node_modules/lodash/_basePick.js","node_modules/lodash/_basePickBy.js","node_modules/lodash/_baseProperty.js","node_modules/lodash/_basePropertyDeep.js","node_modules/lodash/_baseRange.js","node_modules/lodash/_baseReduce.js","node_modules/lodash/_baseRest.js","node_modules/lodash/_baseSet.js","node_modules/lodash/_baseSetData.js","node_modules/lodash/_baseSetToString.js","node_modules/lodash/_baseSlice.js","node_modules/lodash/_baseTimes.js","node_modules/lodash/_baseToString.js","node_modules/lodash/_baseUnary.js","node_modules/lodash/_baseUniq.js","node_modules/lodash/_baseUnset.js","node_modules/lodash/_baseXor.js","node_modules/lodash/_cacheHas.js","node_modules/lodash/_castPath.js","node_modules/lodash/_castSlice.js","node_modules/lodash/_cloneArrayBuffer.js","node_modules/lodash/_cloneBuffer.js","node_modules/lodash/_cloneDataView.js","node_modules/lodash/_cloneMap.js","node_modules/lodash/_cloneRegExp.js","node_modules/lodash/_cloneSet.js","node_modules/lodash/_cloneSymbol.js","node_modules/lodash/_cloneTypedArray.js","node_modules/lodash/_composeArgs.js","node_modules/lodash/_composeArgsRight.js","node_modules/lodash/_copyArray.js","node_modules/lodash/_copyObject.js","node_modules/lodash/_copySymbols.js","node_modules/lodash/_copySymbolsIn.js","node_modules/lodash/_coreJsData.js","node_modules/lodash/_countHolders.js","node_modules/lodash/_createBaseEach.js","node_modules/lodash/_createBaseFor.js","node_modules/lodash/_createBind.js","node_modules/lodash/_createCaseFirst.js","node_modules/lodash/_createCtor.js","node_modules/lodash/_createCurry.js","node_modules/lodash/_createFlow.js","node_modules/lodash/_createHybrid.js","node_modules/lodash/_createPartial.js","node_modules/lodash/_createRange.js","node_modules/lodash/_createRecurry.js","node_modules/lodash/_createSet.js","node_modules/lodash/_createWrap.js","node_modules/lodash/_customOmitClone.js","node_modules/lodash/_defineProperty.js","node_modules/lodash/_equalArrays.js","node_modules/lodash/_equalByTag.js","node_modules/lodash/_equalObjects.js","node_modules/lodash/_flatRest.js","node_modules/lodash/_freeGlobal.js","node_modules/lodash/_getAllKeys.js","node_modules/lodash/_getAllKeysIn.js","node_modules/lodash/_getData.js","node_modules/lodash/_getFuncName.js","node_modules/lodash/_getHolder.js","node_modules/lodash/_getMapData.js","node_modules/lodash/_getMatchData.js","node_modules/lodash/_getNative.js","node_modules/lodash/_getPrototype.js","node_modules/lodash/_getRawTag.js","node_modules/lodash/_getSymbols.js","node_modules/lodash/_getSymbolsIn.js","node_modules/lodash/_getTag.js","node_modules/lodash/_getValue.js","node_modules/lodash/_getWrapDetails.js","node_modules/lodash/_hasPath.js","node_modules/lodash/_hasUnicode.js","node_modules/lodash/_hashClear.js","node_modules/lodash/_hashDelete.js","node_modules/lodash/_hashGet.js","node_modules/lodash/_hashHas.js","node_modules/lodash/_hashSet.js","node_modules/lodash/_initCloneArray.js","node_modules/lodash/_initCloneByTag.js","node_modules/lodash/_initCloneObject.js","node_modules/lodash/_insertWrapDetails.js","node_modules/lodash/_isFlattenable.js","node_modules/lodash/_isIndex.js","node_modules/lodash/_isIterateeCall.js","node_modules/lodash/_isKey.js","node_modules/lodash/_isKeyable.js","node_modules/lodash/_isLaziable.js","node_modules/lodash/_isMasked.js","node_modules/lodash/_isPrototype.js","node_modules/lodash/_isStrictComparable.js","node_modules/lodash/_listCacheClear.js","node_modules/lodash/_listCacheDelete.js","node_modules/lodash/_listCacheGet.js","node_modules/lodash/_listCacheHas.js","node_modules/lodash/_listCacheSet.js","node_modules/lodash/_mapCacheClear.js","node_modules/lodash/_mapCacheDelete.js","node_modules/lodash/_mapCacheGet.js","node_modules/lodash/_mapCacheHas.js","node_modules/lodash/_mapCacheSet.js","node_modules/lodash/_mapToArray.js","node_modules/lodash/_matchesStrictComparable.js","node_modules/lodash/_memoizeCapped.js","node_modules/lodash/_mergeData.js","node_modules/lodash/_metaMap.js","node_modules/lodash/_nativeCreate.js","node_modules/lodash/_nativeKeys.js","node_modules/lodash/_nativeKeysIn.js","node_modules/lodash/_nodeUtil.js","node_modules/lodash/_objectToString.js","node_modules/lodash/_overArg.js","node_modules/lodash/_overRest.js","node_modules/lodash/_parent.js","node_modules/lodash/_realNames.js","node_modules/lodash/_reorder.js","node_modules/lodash/_replaceHolders.js","node_modules/lodash/_root.js","node_modules/lodash/_setCacheAdd.js","node_modules/lodash/_setCacheHas.js","node_modules/lodash/_setData.js","node_modules/lodash/_setToArray.js","node_modules/lodash/_setToString.js","node_modules/lodash/_setWrapToString.js","node_modules/lodash/_shortOut.js","node_modules/lodash/_stackClear.js","node_modules/lodash/_stackDelete.js","node_modules/lodash/_stackGet.js","node_modules/lodash/_stackHas.js","node_modules/lodash/_stackSet.js","node_modules/lodash/_strictIndexOf.js","node_modules/lodash/_stringToArray.js","node_modules/lodash/_stringToPath.js","node_modules/lodash/_toKey.js","node_modules/lodash/_toSource.js","node_modules/lodash/_unicodeToArray.js","node_modules/lodash/_updateWrapDetails.js","node_modules/lodash/_wrapperClone.js","node_modules/lodash/ary.js","node_modules/lodash/capitalize.js","node_modules/lodash/chunk.js","node_modules/lodash/clone.js","node_modules/lodash/constant.js","node_modules/lodash/curry.js","node_modules/lodash/debounce.js","node_modules/lodash/difference.js","node_modules/lodash/eq.js","node_modules/lodash/escapeRegExp.js","node_modules/lodash/filter.js","node_modules/lodash/findIndex.js","node_modules/lodash/findLastIndex.js","node_modules/lodash/flatten.js","node_modules/lodash/flow.js","node_modules/lodash/fp/_baseConvert.js","node_modules/lodash/fp/_falseOptions.js","node_modules/lodash/fp/_mapping.js","node_modules/lodash/fp/_util.js","node_modules/lodash/fp/capitalize.js","node_modules/lodash/fp/chunk.js","node_modules/lodash/fp/convert.js","node_modules/lodash/fp/debounce.js","node_modules/lodash/fp/escapeRegExp.js","node_modules/lodash/fp/filter.js","node_modules/lodash/fp/findIndex.js","node_modules/lodash/fp/findLastIndex.js","node_modules/lodash/fp/flow.js","node_modules/lodash/fp/isEmpty.js","node_modules/lodash/fp/isEqual.js","node_modules/lodash/fp/omit.js","node_modules/lodash/fp/pick.js","node_modules/lodash/fp/pickBy.js","node_modules/lodash/fp/placeholder.js","node_modules/lodash/fp/range.js","node_modules/lodash/fp/reduce.js","node_modules/lodash/fp/throttle.js","node_modules/lodash/fp/upperFirst.js","node_modules/lodash/fp/without.js","node_modules/lodash/fp/xor.js","node_modules/lodash/get.js","node_modules/lodash/hasIn.js","node_modules/lodash/identity.js","node_modules/lodash/inRange.js","node_modules/lodash/isArguments.js","node_modules/lodash/isArray.js","node_modules/lodash/isArrayLike.js","node_modules/lodash/isArrayLikeObject.js","node_modules/lodash/isBuffer.js","node_modules/lodash/isEmpty.js","node_modules/lodash/isEqual.js","node_modules/lodash/isFunction.js","node_modules/lodash/isLength.js","node_modules/lodash/isObject.js","node_modules/lodash/isObjectLike.js","node_modules/lodash/isPlainObject.js","node_modules/lodash/isSymbol.js","node_modules/lodash/isTypedArray.js","node_modules/lodash/iteratee.js","node_modules/lodash/keys.js","node_modules/lodash/keysIn.js","node_modules/lodash/last.js","node_modules/lodash/memoize.js","node_modules/lodash/noop.js","node_modules/lodash/now.js","node_modules/lodash/omit.js","node_modules/lodash/pick.js","node_modules/lodash/pickBy.js","node_modules/lodash/property.js","node_modules/lodash/range.js","node_modules/lodash/rearg.js","node_modules/lodash/reduce.js","node_modules/lodash/stubArray.js","node_modules/lodash/stubFalse.js","node_modules/lodash/throttle.js","node_modules/lodash/toFinite.js","node_modules/lodash/toInteger.js","node_modules/lodash/toNumber.js","node_modules/lodash/toPath.js","node_modules/lodash/toString.js","node_modules/lodash/uniq.js","node_modules/lodash/upperFirst.js","node_modules/lodash/without.js","node_modules/lodash/wrapperLodash.js","node_modules/lodash/xor.js","node_modules/preact-redux/dist/preact-redux.js","node_modules/preact/dist/preact.js","node_modules/process/browser.js","node_modules/promise/index.js","node_modules/promise/lib/core.js","node_modules/promise/lib/done.js","node_modules/promise/lib/es6-extensions.js","node_modules/promise/lib/node-extensions.js","node_modules/punycode/punycode.js","node_modules/query-string/index.js","node_modules/querystring-es3/decode.js","node_modules/querystring-es3/encode.js","node_modules/querystring-es3/index.js","node_modules/raphael/raphael.min.js","node_modules/redux-logger/dist/redux-logger.js","node_modules/redux-thunk/lib/index.js","node_modules/redux/lib/applyMiddleware.js","node_modules/redux/lib/bindActionCreators.js","node_modules/redux/lib/combineReducers.js","node_modules/redux/lib/compose.js","node_modules/redux/lib/createStore.js","node_modules/redux/lib/index.js","node_modules/redux/lib/utils/warning.js","node_modules/regenerator-runtime/runtime.js","node_modules/reselect/lib/index.js","node_modules/strict-uri-encode/index.js","node_modules/subscription/index.js","node_modules/symbol-observable/lib/index.js","node_modules/symbol-observable/lib/ponyfill.js","node_modules/timers-browserify/main.js","node_modules/url/url.js","node_modules/url/util.js","node_modules/w3c-keyname/index.js","node_modules/whatwg-fetch/fetch.js","src/script/api.js","src/script/chem/element-color.js","src/script/chem/element.js","src/script/chem/generics.js","src/script/chem/molfile/common.js","src/script/chem/molfile/index.js","src/script/chem/molfile/molfile.js","src/script/chem/molfile/parseSGroup.js","src/script/chem/molfile/utils.js","src/script/chem/molfile/v2000.js","src/script/chem/molfile/v3000.js","src/script/chem/sdf.js","src/script/chem/smiles/cis_trans.js","src/script/chem/smiles/dfs.js","src/script/chem/smiles/index.js","src/script/chem/smiles/stereocenters.js","src/script/chem/struct/atom.js","src/script/chem/struct/atomlist.js","src/script/chem/struct/bond.js","src/script/chem/struct/index.js","src/script/chem/struct/rgroup.js","src/script/chem/struct/sgforest.js","src/script/chem/struct/sgroup.js","src/script/editor/actions/aromatic-fusing.js","src/script/editor/actions/atom.js","src/script/editor/actions/basic.js","src/script/editor/actions/bond.js","src/script/editor/actions/chain.js","src/script/editor/actions/chiral-flag.js","src/script/editor/actions/closely-fusing.js","src/script/editor/actions/fragment.js","src/script/editor/actions/paste.js","src/script/editor/actions/reaction.js","src/script/editor/actions/rgroup.js","src/script/editor/actions/rotate.js","src/script/editor/actions/sgroup.js","src/script/editor/actions/template.js","src/script/editor/actions/utils.js","src/script/editor/index.js","src/script/editor/shared/action.js","src/script/editor/shared/closest.js","src/script/editor/shared/constants.js","src/script/editor/shared/op.js","src/script/editor/shared/utils.js","src/script/editor/tool/apoint.js","src/script/editor/tool/atom.js","src/script/editor/tool/attach.js","src/script/editor/tool/bond.js","src/script/editor/tool/chain.js","src/script/editor/tool/charge.js","src/script/editor/tool/chiral-flag.js","src/script/editor/tool/eraser.js","src/script/editor/tool/helper/lasso.js","src/script/editor/tool/helper/locate.js","src/script/editor/tool/index.js","src/script/editor/tool/paste.js","src/script/editor/tool/reactionarrow.js","src/script/editor/tool/reactionmap.js","src/script/editor/tool/reactionplus.js","src/script/editor/tool/reactionunmap.js","src/script/editor/tool/rgroupatom.js","src/script/editor/tool/rgroupfragment.js","src/script/editor/tool/rotate.js","src/script/editor/tool/select.js","src/script/editor/tool/sgroup.js","src/script/editor/tool/template.js","src/script/raphael-ext.js","src/script/render/draw.js","src/script/render/index.js","src/script/render/options.js","src/script/render/restruct/index.js","src/script/render/restruct/reatom.js","src/script/render/restruct/rebond.js","src/script/render/restruct/rechiralflag.js","src/script/render/restruct/redatasgroupdata.js","src/script/render/restruct/refrag.js","src/script/render/restruct/reloop.js","src/script/render/restruct/reobject.js","src/script/render/restruct/rergroup.js","src/script/render/restruct/rerxnarrow.js","src/script/render/restruct/rerxnplus.js","src/script/render/restruct/resgroup.js","src/script/render/restruct/visel.js","src/script/render/util.js","src/script/ui/action/atoms.js","src/script/ui/action/debug.js","src/script/ui/action/index.js","src/script/ui/action/server.js","src/script/ui/action/templates.js","src/script/ui/action/tools.js","src/script/ui/action/zoom.js","src/script/ui/app/editor.jsx","src/script/ui/app/hidden.jsx","src/script/ui/app/index.jsx","src/script/ui/app/modal.jsx","src/script/ui/app/toolbar.jsx","src/script/ui/component/actionmenu.jsx","src/script/ui/component/cliparea.jsx","src/script/ui/component/dialog.jsx","src/script/ui/component/form/buttonlist.jsx","src/script/ui/component/form/combobox.jsx","src/script/ui/component/form/form.jsx","src/script/ui/component/form/input.jsx","src/script/ui/component/form/measure-input.jsx","src/script/ui/component/form/select-checkbox.jsx","src/script/ui/component/form/select.jsx","src/script/ui/component/form/systemfonts.jsx","src/script/ui/component/measurelog.jsx","src/script/ui/component/structeditor.jsx","src/script/ui/component/structrender.jsx","src/script/ui/component/view/accordion.jsx","src/script/ui/component/view/atom.jsx","src/script/ui/component/view/icon.jsx","src/script/ui/component/view/openbutton.jsx","src/script/ui/component/view/savebutton.jsx","src/script/ui/component/view/spin.jsx","src/script/ui/component/view/tabs.jsx","src/script/ui/component/view/visibleview.jsx","src/script/ui/data/convert/keynorm.js","src/script/ui/data/convert/structconv.js","src/script/ui/data/convert/structformat.js","src/script/ui/data/schema/options-schema.js","src/script/ui/data/schema/schema-helper.js","src/script/ui/data/schema/sdata-schema.js","src/script/ui/data/schema/struct-schema.js","src/script/ui/data/templates.js","src/script/ui/dialog/elements/generic-groups.jsx","src/script/ui/dialog/elements/period-table.jsx","src/script/ui/dialog/index.js","src/script/ui/dialog/mainmenu/about.jsx","src/script/ui/dialog/mainmenu/analyse.jsx","src/script/ui/dialog/mainmenu/check.jsx","src/script/ui/dialog/mainmenu/help.jsx","src/script/ui/dialog/mainmenu/miew.jsx","src/script/ui/dialog/mainmenu/open.jsx","src/script/ui/dialog/mainmenu/options.jsx","src/script/ui/dialog/mainmenu/recognize.jsx","src/script/ui/dialog/mainmenu/save.jsx","src/script/ui/dialog/template/template-attach.jsx","src/script/ui/dialog/template/template-lib.jsx","src/script/ui/dialog/toolbox/atom.jsx","src/script/ui/dialog/toolbox/attach.jsx","src/script/ui/dialog/toolbox/automap.jsx","src/script/ui/dialog/toolbox/bond.jsx","src/script/ui/dialog/toolbox/labeledit.jsx","src/script/ui/dialog/toolbox/rgroup-logic.jsx","src/script/ui/dialog/toolbox/rgroup.jsx","src/script/ui/dialog/toolbox/sdata.jsx","src/script/ui/dialog/toolbox/sgroup.jsx","src/script/ui/index.js","src/script/ui/state/action/index.js","src/script/ui/state/editor/index.js","src/script/ui/state/hotkeys.js","src/script/ui/state/index.js","src/script/ui/state/modal/form.js","src/script/ui/state/modal/index.js","src/script/ui/state/modal/sdata.js","src/script/ui/state/options/index.js","src/script/ui/state/server/index.js","src/script/ui/state/shared.js","src/script/ui/state/templates/index.js","src/script/ui/state/templates/init-lib.js","src/script/ui/state/toolbar/index.js","src/script/ui/storage-ext.js","src/script/util/box2abs.js","src/script/util/pile.js","src/script/util/pool.js","src/script/util/scale.js","src/script/util/vec2.js","src/src/script/index.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","ketcher","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","flush","head","next","task","domain","enter","isNodeJS","exit","setTimeout","flushing","asap","tail","process","requestFlush","nextTick","setImmediate","bind","MessageChannel","channel","port1","onmessage","port2","postMessage","classNames","classes","arguments","arg","argType","push","Array","isArray","apply","key","hasOwn","join","hasOwnProperty","it","TypeError","UNSCOPABLES","ArrayProto","prototype","undefined","Constructor","name","forbiddenField","isObject","toObject","toAbsoluteIndex","toLength","copyWithin","target","start","O","len","to","from","end","count","Math","min","inc","value","aLen","index","endPos","toIObject","IS_INCLUDES","$this","el","fromIndex","ctx","IObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","callbackfn","that","val","res","result","SPECIES","original","C","constructor","speciesConstructor","aFunction","invoke","arraySlice","slice","factories","construct","F","args","Function","fn","partArgs","bound","concat","cof","TAG","ARG","tryGet","T","B","Object","callee","toString","dP","redefineAll","anInstance","forOf","$iterDefine","step","setSpecies","DESCRIPTORS","fastKey","validate","SIZE","getEntry","entry","_i","_f","k","getConstructor","wrapper","NAME","ADDER","iterable","_t","_l","clear","data","delete","prev","forEach","v","has","get","def","setStrong","iterated","kind","_k","getWeak","anObject","createArrayMethod","$has","arrayFind","arrayFindIndex","id","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","store","set","splice","ufstore","$export","redefine","meta","fails","$iterDetect","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","Base","proto","fixMethod","KEY","b","entries","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","iter","BUGGY_ZERO","$instance","NEED","G","W","core","version","__e","$defineProperty","createDesc","object","defineProperty","document","is","createElement","split","getKeys","gOPS","pIE","getSymbols","symbols","isEnum","hide","type","source","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","S","IS_PROTO","P","IS_BIND","expProto","U","R","MATCH","re","exec","defined","wks","SYMBOL","fns","strfn","rxfn","String","RegExp","string","ignoreCase","multiline","unicode","sticky","isArrayIter","getIterFn","BREAK","RETURN","ITERATOR","iterator","iterFn","done","__g","documentElement","setPrototypeOf","un","propertyIsEnumerable","Iterators","floor","isFinite","isRegExp","ret","descriptor","IteratorPrototype","LIBRARY","$iterCreate","getPrototypeOf","BUGGY","keys","returnThis","DEFAULT","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","SAFE_CLOSING","riter","skipClosing","safe","arr","$expm1","expm1","x","sign","pow","EPSILON","EPSILON32","MAX32","MIN32","roundTiesToEven","fround","$abs","abs","$sign","Infinity","log1p","log","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","onFreeze","macrotask","Observer","MutationObserver","WebKitMutationObserver","Promise","isNode","last","notify","parent","navigator","standalone","resolve","promise","then","toggle","node","createTextNode","observe","characterData","PromiseCapability","reject","$$resolve","$$reject","$assign","assign","A","Symbol","K","j","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","open","write","lt","close","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","defineProperties","gOPD","getOwnPropertyDescriptor","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","isEntries","Reflect","ownKeys","newPromiseCapability","promiseCapability","bitmap","enumerable","configurable","writable","SRC","$toString","TPL","inspectSource","isFunction","y","check","test","buggy","__proto__","tag","stat","shared","uid","mode","copyright","D","toInteger","TO_STRING","pos","s","l","charCodeAt","charAt","searchString","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","ceil","str","RangeError","defer","port","html","cel","setTask","clearTask","clearImmediate","Dispatch","counter","queue","run","listener","event","now","addEventListener","importScripts","removeChild","max","number","isNaN","valueOf","$typed","$buffer","propertyDesc","toIndex","classof","createArrayIncludes","ArrayIterators","arrayFill","arrayCopyWithin","$DP","$GOPD","Uint8Array","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arrayToString","arrayToLocaleString","toLocaleString","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","offset","speciesFromList","list","fromList","addGetter","internal","_d","$from","mapfn","mapping","$of","TO_LOCALE_BUG","$toLocaleString","every","fill","filter","find","predicate","findIndex","indexOf","searchElement","includes","separator","map","reverse","middle","some","comparefn","subarray","begin","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","desc","$TypedArrayPrototype$","CLAMPED","GETTER","SETTER","TypedArray","TAC","ABV","TypedArrayPrototype","getter","setter","round","addElement","$offset","$length","byteLength","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","packIEEE754","mLen","nBytes","m","eLen","eMax","eBias","rt","LN2","unpackIEEE754","nBits","NaN","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","PROTOTYPE","view","isLittleEndian","numIndex","intIndex","$LENGTH","WRONG_INDEX","$BUFFER","_b","$OFFSET","pack","conversion","BaseBuffer","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","Typed","TypedArrayConstructors","px","random","userAgent","wksExt","$Symbol","USE_SYMBOL","getIteratorMethod","$find","forced","createProperty","addToUnscopables","Arguments","FProto","nameRE","match","strong","sqrt","$acosh","acosh","Number","MAX_VALUE","asinh","$asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","hypot","value1","value2","div","sum","larg","$imul","imul","xn","yn","xl","yl","log10","LOG10E","log2","sinh","E","tanh","trunc","_isFinite","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","handler","fail","_h","onHandleUnhandled","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","error","_a","onrejectionhandled","$reject","_w","$resolve","executor","err","onFulfilled","onRejected","catch","capability","all","remaining","$index","alreadyCalled","race","rApply","fApply","thisArgument","argumentsList","L","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","getProto","receiver","$isExtensible","$preventExtensions","setProto","V","existingDescriptor","ownDesc","flags","$match","regexp","REPLACE","$replace","searchValue","replaceValue","SEARCH","$search","SPLIT","$split","_split","$push","LENGTH","NPCG","limit","separator2","lastIndex","lastLength","output","lastLastIndex","splitLimit","separatorCopy","replace","add","$at","codePointAt","context","$endsWith","endsWith","endPosition","search","fromCharCode","$fromCodePoint","fromCodePoint","raw","callSite","tpl","$startsWith","startsWith","$fails","wksDefine","enumKeys","_create","gOPNExt","$JSON","JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","$isView","isView","first","fin","viewS","viewT","init","InternalMap","each","weak","tmp","$WeakMap","freeze","method","$includes","getOwnPropertyDescriptors","getDesc","$values","$pad","padEnd","padStart","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","$task","MSIE","time","boundArgs","setInterval","saveAs","doc","get_URL","URL","webkitURL","save_link","createElementNS","can_use_save_link","click","MouseEvent","dispatchEvent","webkit_req_fs","webkitRequestFileSystem","req_fs","requestFileSystem","mozRequestFileSystem","throw_outside","ex","fs_min_size","revoke","file","revoker","revokeObjectURL","remove","chrome","dispatch","filesaver","event_types","auto_bom","blob","Blob","FileSaver","no_auto_bom","object_url","target_view","blob_changed","dispatch_all","fs_error","createObjectURL","location","href","safari","readyState","DONE","abortable","func","create_if_not_found","exclusive","INIT","download","webkitSlice","size","TEMPORARY","fs","root","getDirectory","dir","save","getFile","createWriter","writer","onwriteend","toURL","onerror","ABORT_ERR","abort","WRITING","NOT_FOUND_ERR","FS_proto","msSaveOrOpenBlob","onwritestart","onprogress","onwrite","onabort","content","dom","createText","text","element","cssText","append","child","Ruler","family","descriptors","weight","variant","stretch","featureSettings","HAS_WEBKIT_FALLBACK_BUG","DEFAULT_TIMEOUT","getUserAgent","hasWebKitFallbackBug","parseInt","getStyle","timeout","testString","timeoutValue","container","rulerA","rulerB","rulerC","widthA","widthB","widthC","fallbackWidthA","fallbackWidthB","fallbackWidthC","setFont","getElement","body","getWidth","removeContainer","parentNode","onResize","width","setAttribute","collapsible","expandable","collapsibleInner","expandableInner","lastOffsetWidth","description","offsetWidth","setWidth","reset","scrollLeft","scrollWidth","onScroll","callback","testSchema","options","schema","validateSchema","valid","testAdditionalProperty","property","properties","additionalProperties","addError","argument","message","makeChild","importErrors","testArrays","helpers","deepCompareStrict","ValidatorResult","SchemaError","attribute","ignoreProperties","default","title","exclusiveMinimum","exclusiveMaximum","additionalItems","$schema","$ref","extends","validators","types","testType","anyOf","inner","nestedErrors","allOf","msg","errors","oneOf","prop","patternProperties","pattern","minProperties","maxProperties","items","minimum","maximum","divisibleBy","multipleOf","required","format","disableFormat","isFormat","minLength","minItems","maxItems","uniqueItems","dependencies","dep","childContext","propertyPath","not","disallow","notTypes","schemaId","stringizer","deepMerger","dst","deepMerge","copyist","copyistWithDeepMerge","array","pathEncoder","encodeURIComponent","uri","ValidationError","stack","throwError","detail","validatorType","captureStackTrace","SchemaContext","base","schemas","propertyName","makeSuffix","FORMAT_REGEXPS","date-time","date","email","ip-address","ipv6","color","hostname","host-name","alpha","alphanumeric","utc-millisec","input","parseFloat","regex","phone","ipv4","validator","customFormats","aKeys","bKeys","objectGetPath","parts","shift","decodeURIComponent","encodePath","Validator","shouldResolve","ref","urilib","unresolvedRefs","addSchema","ourUri","addSubSchema","baseuri","resolvedUri","ourBase","documentUri","addSubSchemaArray","addSubSchemaObject","definitions","setSchemas","getSchema","urn","schemaobj","schemaTraverser","superResolve","switchSchema","resolved","subctx","subschema","skipAttributes","validatorErr","allowUnknownAttributes","rewrite","parsed","parse","fragment","hash","substr","integer","boolean","Date","any","getNative","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","MAX_ARRAY_LENGTH","__views__","baseCreate","baseLodash","ListCache","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","LodashWrapper","chainAll","__chain__","__index__","__values__","Map","MapCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Set","SetCache","__data__","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","WeakMap","addMapEntry","pair","addSetEntry","thisArg","arrayEach","iteratee","resIndex","baseIndexOf","arrayIncludesWith","comparator","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isBuffer","isType","isTypedArray","skipIndexes","baseTimes","isIndex","objectProto","arrayMap","arrayPush","accumulator","initAccum","asciiToArray","assignValue","objValue","eq","baseAssignValue","assocIndexOf","baseAssign","copyObject","baseAssignIn","keysIn","baseClone","bitmask","customizer","isDeep","CLONE_DEEP_FLAG","isFlat","CLONE_FLAT_FLAG","isFull","CLONE_SYMBOLS_FLAG","initCloneArray","copyArray","getTag","isFunc","funcTag","genTag","cloneBuffer","objectTag","argsTag","initCloneObject","copySymbolsIn","copySymbols","cloneableTags","initCloneByTag","stacked","keysFunc","getAllKeysIn","getAllKeys","props","subValue","objectCreate","baseDifference","isCommon","valuesLength","baseUnary","LARGE_ARRAY_SIZE","cacheHas","outer","computed","valuesIndex","baseForOwn","createBaseEach","baseEach","baseFilter","collection","baseFindIndex","fromRight","baseFlatten","depth","isStrict","isFlattenable","createBaseFor","baseFor","baseGet","path","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGetTag","undefinedTag","nullTag","symToStringTag","getRawTag","objectToString","toStringTag","baseHasIn","baseInRange","nativeMin","nativeMax","strictIndexOf","baseIsNaN","baseIsArguments","isObjectLike","baseIsEqual","other","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","arrayTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","COMPARE_PARTIAL_FLAG","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_UNORDERED_FLAG","baseIsNative","isMasked","reIsNative","reIsHostCtor","toSource","reRegExpChar","funcProto","funcToString","baseIsTypedArray","isLength","typedArrayTags","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","nativeKeys","baseKeysIn","nativeKeysIn","isProto","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","basePick","paths","basePickBy","baseSet","baseProperty","basePropertyDeep","baseRange","nativeCeil","baseReduce","eachFunc","baseRest","setToString","overRest","nested","newValue","metaMap","baseSetData","constant","baseSetToString","baseSlice","baseToString","symbolToString","INFINITY","symbolProto","baseUniq","seen","createSet","setToArray","seenIndex","baseUnset","baseXor","arrays","othIndex","cache","stringToPath","castSlice","cloneArrayBuffer","arrayBuffer","allocUnsafe","copy","freeExports","nodeType","freeModule","moduleExports","Buffer","cloneDataView","dataView","cloneMap","cloneFunc","mapToArray","cloneRegExp","reFlags","cloneSet","cloneSymbol","symbol","symbolValueOf","cloneTypedArray","typedArray","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbolsIn","coreJsData","countHolders","placeholder","isArrayLike","createBind","Ctor","isBind","WRAP_BIND_FLAG","createCtor","createCaseFirst","methodName","strSymbols","hasUnicode","stringToArray","chr","trailing","thisBinding","createCurry","arity","getHolder","replaceHolders","createRecurry","createHybrid","createFlow","flatRest","funcs","prereq","thru","FUNC_ERROR_TEXT","getFuncName","funcName","getData","isLaziable","WRAP_ARY_FLAG","WRAP_CURRY_FLAG","WRAP_PARTIAL_FLAG","WRAP_REARG_FLAG","plant","partialsRight","holdersRight","argPos","ary","holdersCount","newHolders","isBindKey","reorder","isFlip","isAry","WRAP_BIND_KEY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_FLIP_FLAG","createPartial","createRange","isIterateeCall","toFinite","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","WRAP_PARTIAL_RIGHT_FLAG","WRAP_CURRY_BOUND_FLAG","newData","setData","setWrapToString","noop","createWrap","mergeData","customOmitClone","isPlainObject","isPartial","arrLength","othLength","arrValue","othValue","compared","dataViewTag","arrayBufferTag","boolTag","dateTag","numberTag","errorTag","regexpTag","stringTag","mapTag","convert","setTag","symbolTag","objProps","objLength","skipCtor","objCtor","othCtor","flatten","freeGlobal","realNames","otherFunc","getMapData","isKeyable","getValue","overArg","getPrototype","isOwn","unmasked","nativeObjectToString","stubArray","nativeGetSymbols","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","getWrapDetails","reWrapDetails","reSplitDetails","hasPath","hasFunc","reHasUnicode","nativeCreate","HASH_UNDEFINED","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","insertWrapDetails","details","reWrapComment","spreadableSymbol","isConcatSpreadable","reIsUint","reIsPlainProp","reIsDeepProp","lodash","maskSrcKey","pop","arrayProto","memoizeCapped","memoize","MAX_MEMOIZE_SIZE","srcBitmask","newBitmask","isCombo","PLACEHOLDER","freeProcess","nodeUtil","binding","transform","otherArgs","indexes","oldArray","freeSelf","shortOut","reference","updateWrapDetails","lastCalled","stamp","nativeNow","HOT_SPAN","HOT_COUNT","pairs","unicodeToArray","reLeadingDot","rePropName","reEscapeChar","quote","reUnicode","rsCombo","rsFitz","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptJoin","rsSeq","rsSymbol","wrapFlags","wrapperClone","clone","guard","capitalize","upperFirst","toLowerCase","chunk","curry","debounce","wait","invokeFunc","lastArgs","lastThis","lastInvokeTime","leadingEdge","timerId","timerExpired","leading","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","maxing","maxWait","shouldInvoke","trailingEdge","cancel","clearTimeout","debounced","isInvoking","toNumber","isArrayLikeObject","difference","escapeRegExp","reHasRegExpChar","findLastIndex","flow","baseArity","baseAry","cloneArray","createCloner","flatSpread","wrapImmutable","cloner","baseConvert","util","castCap","config","cap","iterateeRearg","isLib","iterateeAry","castCurry","forceCurry","castFixed","fixed","forceFixed","skipFixed","methodSpread","castRearg","rearg","forceRearg","skipRearg","methodRearg","aryRearg","cloneByPath","toPath","convertLib","_","runInContext","createConverter","realName","aliasToReal","remap","oldOptions","newUtil","pristine","newFunc","newOptions","wrapped","wrappers","immutable","mutate","aryMethodKeys","aryKey","aryMethod","otherName","afterRearg","setPlaceholder","isObj","fallbackHolder","castArray","mixin","nthArg","realToAlias","alias","eachRight","entriesIn","extend","extendAll","extendAllWith","extendWith","conforms","matches","__","allPass","always","anyPass","assoc","assocPath","complement","compose","contains","dissoc","dissocPath","dropLast","dropLastWhile","equals","identical","indexBy","invertObj","juxt","omitAll","nAry","pathEq","pathOr","pickAll","pipe","pluck","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","where","whereEq","zipObj","2","3","4","dropRightWhile","dropWhile","findFrom","findIndexFrom","findKey","findLast","findLastFrom","findLastIndexFrom","findLastKey","flatMap","flatMapDeep","flatMapDepth","forEachRight","forIn","forInRight","forOwn","forOwnRight","mapKeys","mapValues","partition","takeRightWhile","takeWhile","times","assignInAllWith","assignInWith","assignAllWith","assignWith","differenceBy","differenceWith","getOr","intersectionBy","intersectionWith","isEqualWith","isMatchWith","mergeAllWith","mergeWith","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","setWith","sortedIndexBy","sortedLastIndexBy","unionBy","unionWith","updateWith","xorBy","xorWith","zipWith","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","partial","partialRight","without","zipAll","pull","pullAll","pullAt","assignIn","defaults","defaultsDeep","merge","unset","update","bindKey","curryRight","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","propertyOf","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","flowRight","divide","gt","gte","isEqual","lte","matchesProperty","multiply","overArgs","range","rangeRight","subtract","zip","zipObject","zipObjectDeep","defaultValue","inRange","stubFalse","nativeIsBuffer","isEmpty","asyncTag","proxyTag","objectCtorString","nodeIsTypedArray","resolver","memoized","Cache","omit","pick","pickBy","throttle","MAX_INTEGER","remainder","NAN","reTrim","isBinary","reIsBinary","reIsOctal","freeParseInt","reIsBadHex","uniq","xor","factory","preactRedux","preact","Redux","redux","proptype","createListenerCollection","current","CLEARED","listeners","subscribe","isSubscribed","warning","warnAboutReceivingStore","didWarnAboutReceivingStore","connectAdvanced","selectorFactory","_contextTypes","_childContextTypes","_ref","_ref$getDisplayName","getDisplayName","_ref$methodName","_ref$renderCountProp","renderCountProp","_ref$shouldHandleStat","shouldHandleStateChanges","_ref$storeKey","storeKey","_ref$withRef","withRef","connectOptions","objectWithoutProperties","subscriptionKey","hotReloadingVersion","contextTypes","storeShape","PropTypes","instanceOf","Subscription","childContextTypes","WrappedComponent","invariant","wrappedComponentName","displayName","selectorFactoryOptions","_extends","Connect","_Component","classCallCheck","_this","possibleConstructorReturn","state","renderCount","parentSub","setWrappedInstance","getState","initSelector","initSubscription","inherits","getChildContext","_ref2","subscription","componentDidMount","trySubscribe","selector","shouldComponentUpdate","forceUpdate","componentWillReceiveProps","nextProps","componentWillUnmount","tryUnsubscribe","getWrappedInstance","wrappedInstance","sourceSelector","_this2","dummyState","onStateChange","componentDidUpdate","notifyNestedSubs","setState","Boolean","addExtraProps","withExtras","render","h","Component","componentWillUpdate","shallowEqual","countA","countB","_key","nativeGetPrototype","isHostObject","_typeof","verifyPlainObject","wrapMapToPropsConstant","getConstant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","whenMapDispatchToPropsIsFunction","mapDispatchToProps","whenMapDispatchToPropsIsMissing","whenMapDispatchToPropsIsObject","bindActionCreators","whenMapStateToPropsIsFunction","mapStateToProps","whenMapStateToPropsIsMissing","defaultMergeProps","stateProps","dispatchProps","wrapMergePropsFunc","mergeProps","pure","areMergedPropsEqual","hasRunOnce","mergedProps","nextMergedProps","whenMergePropsIsFunction","whenMergePropsIsOmitted","verify","verifySubselectors","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","handleFirstCall","firstState","firstOwnProps","hasRunAtLeastOnce","handleNewPropsAndNewState","handleNewProps","handleNewState","nextStateProps","statePropsChanged","areStatePropsEqual","handleSubsequentCalls","nextState","nextOwnProps","propsChanged","areOwnPropsEqual","stateChanged","areStatesEqual","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","strictEqual","Children","only","children","isRequired","shape","obj","subClass","superClass","ReferenceError","nullListeners","unsubscribe","addNestedSub","Provider","storeSubscription","REACT_STATICS","defaultProps","getDefaultProps","mixins","propTypes","KNOWN_STATICS","caller","isGetOwnPropertySymbolsAvailable","targetComponent","sourceComponent","customStatics","defaultMapDispatchToPropsFactories","defaultMapStateToPropsFactories","defaultMergePropsFactories","connect","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref2$pure","_ref2$areStatesEqual","_ref2$areOwnPropsEqua","_ref2$areStatePropsEq","_ref2$areMergedPropsE","extraOptions","VNode","nodeName","lastSimple","simple","EMPTY_CHILDREN","vnode","cloneElement","enqueueRender","component","__d","debounceRendering","rerender","renderComponent","isSameNodeType","hydrating","splitText","_componentConstructor","isNamedNode","__n","getNodeProps","createNode","isSvg","removeNode","setAccessor","old","IS_NON_DIMENSIONAL","innerHTML","__html","useCapture","substring","eventProxy","removeEventListener","__l","setProperty","removeAttribute","ns","removeAttributeNS","setAttributeNS","className","flushMounts","mounts","afterMount","diff","mountAll","componentRoot","diffLevel","isSvgMode","ownerSVGElement","idiff","prevSvgMode","_component","nodeValue","replaceChild","recollectNodeTree","__preactattr_","buildComponentFromVNode","firstChild","fc","vchildren","nextSibling","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","vchild","originalChildren","childNodes","keyed","keyedLen","childrenLen","vlen","_child","__k","trim","insertBefore","unmountOnly","unmountComponent","removeChildren","lastChild","previousSibling","attrs","collectComponent","components","createComponent","inst","doRender","__b","setComponentProps","opts","__x","__r","componentWillMount","__c","__p","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","__s","previousContext","isUpdate","nextBase","initialBase","initialChildComponent","skip","toUnmount","childComponent","childProps","__u","baseParent","componentRef","unshift","afterUpdate","__h","originalComponent","oldDom","isDirectOwner","isOwner","beforeUnmount","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","Item","browser","env","argv","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","handle","deferred","deferreds","cb","doResolve","finale","Handler","ValuePromise","TRUE","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","denodeify","argumentCount","nodeify","mapDomain","regexSeparators","ucs2decode","extra","ucs2encode","stringFromCharCode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","damp","baseMinusTMin","tMax","skew","decode","basic","oldi","baseMinusT","inputLength","initialN","bias","initialBias","delimiter","maxInt","tMin","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","toASCII","regexNonASCII","punycode","overflow","not-basic","invalid-input","ucs2","strictUriEncode","extract","param","val2","qs","sep","maxKeys","kstr","vstr","idx","xs","stringifyPrimitive","objectKeys","ks","Raphael","loaded","Q","_engine","z","$","hex","d","Y","H","toFixed","bezierBBox","isBBoxIntersect","findDotsAtSegment","t1","t2","_path2curve","segment1","segment2","bez1","bez2","height","ms","ht","Bt","anim","top","percents","Ee","percent","attr","totalOrigin","initstatus","pt","paper","customAttributes","ft","getRGB","Qt","M","N","le","real","matrix","getBBox","se","I","easing","easing_formulas","st","St","timestamp","del","status","stop","origin","Ne","Me","eve","circle","rect","ellipse","image","win","was","ca","DocumentTouch","mousedown","mousemove","mouseup","X","PI","Z","tt","nt","_ISURL","at","-Infinity","ot","ut","ct","toUpperCase","_availableAttrs","arrow-end","arrow-start","blur","clip-rect","cursor","cx","cy","fill-opacity","font","font-family","font-size","font-style","font-weight","gradient","letter-spacing","opacity","rx","ry","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-anchor","class","_availableAnimAttrs","vt","hs","rg","xt","yt","mt","bt","wt","_radial_gradient","At","_rectPath","Tt","Et","_getPath","_getBBox","Mt","mapPath","_g","SVGAngle","implementation","hasFeature","Lt","Nt","behavior","adj","svg","vml","_Paper","_id","angle","atan2","rad","deg","snapTo","createUUID","setWindow","initWin","Pt","ActiveXObject","createPopup","createTextRange","queryCommandValue","defaultView","getComputedStyle","getPropertyValue","Ft","Rt","jt","It","qt","rgb","hsb2rgb","hsl2rgb","rgb2hsl","rgb2hsb","_path2string","_preload","onload","hsb","hsl","getColor","parsePathString","Vt","Yt","parseTransformString","ps","sleep","Zt","x2","y2","isPointInsideBBox","pathIntersection","pathIntersectionNumber","isPointInsidePath","pathBBox","_removedFactory","Ot","bbox","Wt","_pathToRelative","rel","Gt","_pathToAbsolute","Ht","Xt","Ut","cos","sin","asin","tan","$t","curve","bx","by","qx","qy","Kt","_parseDots","_tear","bottom","ne","_tofront","_toback","_insertafter","_insertbefore","toMatrix","transformPath","_extractTransform","invert","translate","rotate","scale","dirtyT","sx","sy","dx","dy","oe","_equaliseTransform","_getContainer","getElementById","tagName","pixelWidth","pixelHeight","offsetHeight","pathToRelative","path2curve","toFilter","scalex","shear","scaley","acos","isSimple","isSuperSimple","noRotation","toTransformString","he","returnValue","ue","originalEvent","preventDefault","ce","cancelBubble","fe","stopPropagation","pe","scrollTop","clientX","clientY","de","targetTouches","attachEvent","detachEvent","ge","ve","touches","identifier","_drag","opera","getElementByPoint","move_scope","xe","unmousemove","unmouseup","end_scope","start_scope","ye","me","events","unbind","removeData","hover","mouseover","mouseout","unhover","unmouseover","unmouseout","be","drag","onDragOver","undrag","unmousedown","__set__","ze","setStart","setFinish","getSize","canvas","setSize","setViewBox","raphael","_e","getBoundingClientRect","ownerDocument","clientTop","clientLeft","pageYOffset","pageXOffset","elementFromPoint","createSVGRect","getIntersectionList","getById","raphaelid","getElementsByBBox","getElementsByPoint","isPointInside","realPath","removed","dirty","bboxwt","glow","offsetx","offsety","ke","Be","Ce","Se","Ae","getTotalLength","getPointAtLength","getSubpath","getPath","Te","linear","<",">","<>","backIn","backOut","elastic","bounce","easeIn","easeOut","easeInOut","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","paused","Le","animateWith","animation","onAnimation","delay","100","animate","setTime","pause","resume","Pe","Fe","exclude","insertAfter","registerFont","face","fonts","glyphs","getFont","normal","bold","lighter","bolder","print","descent","fullfill","ninja","firstDefined","lastDefined","zIndex","_events","nts","block","classic","diamond","oval","webkitTapHighlightColor","defs","fx","fy","x1","y1","gradientTransform","stop-color","stop-opacity","fillOpacity","documentMode","protocol","host","pathname","patternTransform","arrows","endPath","endMarker","startPath","startMarker","getElementsByTagName","markerHeight","markerWidth","orient","refX","refY","xlink:href","startdx","enddx","-",".","-.","-..",". ","- ","--","- .","--.","--..","square","butt","visibility","clip","clip-path","getAttribute","startString","endString","patternUnits","show","parentElement","clientWidth","clientHeight","toFront","toBack","stdDeviation","_blur","preserveAspectRatio","_viewBox","xmlns","xmlns:xlink","_left","_top","renderfix","_vbSize","viewBox","getScreenCTM","createSVGMatrix","fillpos","coordsize","rotation","flip","coordorigin","fillsize","position","clipRect","textpath","fontFamily","fontSize","fontWeight","fontStyle","joinstyle","miterlimit","endcap","dashstyle","span","right","J","bbx","color2","colors","focus","focussize","focusposition","_oid","_viewBoxShift","auxGetBBox","runtimeStyle","margin","Path","textpathok","styleSheets","createStyleSheet","addRule","namespaces","rvml","reduxLogger","super_","prefilter","normalize","lhs","rhs","item","groupCollapsed","group","groupEnd","duration","logger","actionTransformer","titleFormatter","collapsed","level","started","startedTime","action","prevState","took","stateTransformer","errorTransformer","logErrors","diffPredicate","getHours","getMinutes","getSeconds","getMilliseconds","performance","DeepDiff","observableDiff","applyDiff","applyChange","revertChange","isConflict","noConflict","transformer","createLogger","createThunkMiddleware","extraArgument","__esModule","thunk","withExtraArgument","applyMiddleware","_len","middlewares","createStore","reducer","preloadedState","enhancer","_dispatch","middlewareAPI","middleware","_compose2","_compose","bindActionCreator","actionCreator","actionCreators","boundActionCreators","_interopRequireDefault","getUndefinedStateErrorMessage","actionType","assertReducerSanity","reducers","_createStore","ActionTypes","combineReducers","reducerKeys","finalReducers","sanityError","finalReducerKeys","hasChanged","previousStateForKey","nextStateForKey","errorMessage","_isPlainObject","_warning","rest","composed","ensureCanMutateNextListeners","nextListeners","currentListeners","currentState","_isPlainObject2","isDispatching","currentReducer","replaceReducer","nextReducer","observable","outerSubscribe","observer","observeState","_symbolObservable2","_symbolObservable","_createStore2","_combineReducers","_combineReducers2","_bindActionCreators","_bindActionCreators2","_applyMiddleware","_applyMiddleware2","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","AsyncIterator","record","__await","unwrapped","enqueue","callInvokeWithMethodAndArg","previousPromise","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","GenStateSuspendedYield","return","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","iteratorSymbol","Op","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","regeneratorRuntime","NativeIteratorPrototype","Gp","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","rootEntry","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","defaultMemoize","lastResult","getDependencies","dependencyTypes","createSelectorCreator","memoizeOptions","_len2","_key2","recomputations","resultFunc","memoizedResultFunc","params","resetRecomputations","createStructuredSelector","selectors","selectorCreator","createSelector","_len3","_key3","composition","priority","handlers","insert","PipelineSubscription","StoppableSubscription","DOMSubscription","handlersForDispatch","updated","addOnce","hasHandler","defaultPrevented","_ponyfill","_ponyfill2","symbolObservablePonyfill","_Symbol","Timeout","clearFn","_clearFn","immediateIds","nextImmediateId","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","Url","slashes","auth","query","urlParse","url","parseQueryString","slashesDenoteHost","urlFormat","isString","urlResolve","relative","urlResolveObject","resolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","javascript:","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","http:","https:","ftp:","gopher:","file:","querystring","queryIndex","splitter","uSplit","slashRegex","simplePath","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","ae","esc","escape","qm","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","up","isAbsolute","keyName","ignoreKey","brokenModifierNames","ctrlKey","altKey","metaKey","shiftKey","keyCode","8","9","10","12","13","16","17","18","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","106","107","108","109","110","111","144","145","160","161","162","163","164","165","173","186","187","188","189","190","191","192","219","220","221","222","229","48","49","50","51","52","53","54","55","56","57","vendor","gecko","mac","platform","normalizeName","normalizeValue","iteratorFor","support","Headers","headers","header","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","buf","chars","bufferClone","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","formData","FormData","_bodyFormData","searchParams","URLSearchParams","isDataView","_bodyArrayBuffer","isArrayBufferView","rejected","json","normalizeMethod","upcased","Request","credentials","referrer","form","parseHeaders","rawHeaders","line","Response","bodyInit","statusText","fetch","viewClasses","oldValue","response","redirectStatuses","redirect","request","xhr","XMLHttpRequest","getAllResponseHeaders","responseURL","responseText","ontimeout","withCredentials","responseType","setRequestHeader","send","polyfill","pollDeferred","timeGap","startTimeGap","iterate","api","defaultOptions","indigo_version","imago_versions","indigoCall","defaultData","Content-Type","indigoVersion","imagoVersions","layout","clean","aromatize","dearomatize","calculateCip","automap","calculate","recognize","parVersion","req","upload_id","struct","metadata","mol_str","He","Li","Na","Mg","Al","Si","Cl","Ar","Ca","Sc","Ti","Cr","Mn","Co","Ni","Cu","Zn","Ga","Ge","As","Br","Kr","Rb","Sr","Zr","Nb","Mo","Tc","Ru","Rh","Pd","Ag","Cd","In","Sn","Sb","Xe","Cs","Ba","La","Pr","Nd","Pm","Sm","Eu","Gd","Tb","Dy","Ho","Er","Tm","Yb","Lu","Hf","Ta","Re","Os","Ir","Au","Hg","Tl","Pb","Bi","Po","Rn","Fr","Ra","Ac","Th","Pa","Np","Pu","Am","Cm","Bk","Cf","Es","Fm","Md","No","Lr","Rf","Db","Sg","Bh","Hs","Ds","Rg","Cn","Nh","Fl","Mc","Lv","Ts","Og","sketchingColors","oldColors","label","period","atomic_mass","leftH","mapify","tree","labels","traverse","cur","generics","atom","no-carbon","metal","halogen","acyclic","carbo","alkynyl","alkyl","alkenyl","hetero","alkoxy","cyclic","aryl","cycloalkyl","cycloalkenyl","special","parseMol","ctabLines","_struct","_v2","parseRg2000","parseCTab","countsSplit","partitionLine","_utils2","fmtInfo","countsLinePartition","parseCTabV2000","_v4","parseCTabV3000","loadRGroupFragments","parseRxn","shouldReactionRelayout","parseRxn3000","parseRxn2000","prepareSruForSaving","sgroup","mol","xBonds","bonds","bond","bid","a1","atoms","a2","sgs","error-type","prepareSupForSaving","prepareGenForSaving","prepareDatForSaving","_index","SGroup","getAtoms","saveMulToMolfile","sgMap","atomMap","bondMap","idstr","lines","makeAtomBondLines","atomSet","parentAtomSet","smtLine","mul","bracketsToMolfile","saveSruToMolfile","saveSupToMolfile","saveDatToMolfile","pp","absolute","sub","getMassCentre","sdtLine","fieldName","fieldType","units","queryOp","sddLine","paddedNum","attached","showUnits","nCharnCharsToDisplay","tagChar","daspPos","normalizeNewlines","fieldValue","saveGenToMolfile","prefix","ids","rem","salLine","sg","inBonds","_pile2","getCrossBonds","bracketPos","bb","bracketBox","bracketDir","rotateSC","brackets","getBracketParameters","bracket","a0","addScaled","yComplement","coord","nlRe","withspace","_v3","_pile","_utils","prepareForSaving","MUL","prepareMulForSaving","SRU","SUP","DAT","GEN","saveToMolfile","parseCTFile","molfile","_molfile2","reactionRelayout","badHeaderRecover","ex1","ex2","_molfile","v3000","saveMolecule","ignoreErrors","noRgroups","preserveIndigoDesc","Molfile","molecule","_element","_common","molfileLines","_common2","initHalfBonds","initNeighbors","markFragments","prepareSGroups","skipErrors","toRemove","sGroupForest","getSGroupsBFS","sgroups","errorIgnore","sGroupDelete","getCTab","rgroups","writeCTab2000","skipSGroupErrors","norgroups","rxnArrows","getComponents","reactants","products","saver","submol","scaffold","getScaffold","rgid","writePaddedNumber","frags","fid","getFragment","writeHeader","writeCR","writeWhiteSpace","getMonth","getDate","getFullYear","writePadded","writePaddedFloat","precision","writeCTab2000Header","isChiral","writeAtomPropList","propId","_this3","atomList_list","atomProps_list","atomList","_element2","hCount","stereoCare","explicitValence","aam","invRet","exactChangeFlag","bondMapping","stereo","xxx","topology","reactingCenterStatus","chargeList","isotopeList","radicalList","rglabelList","rglogicList","aplabelList","rbcountList","unsaturatedList","substcountList","charge","isotope","radical","rglabel","rgi","attpnt","ringBondCount","substitutionCount","unsaturatedAtom","resth","ifthen","aid","notList","labelList","sgmap","cnt","sgmapback","parentid","connectivity","subscript","readKeyValuePairs","valueString","_pool2","partitionLineFixed","parseDecimalInt","readKeyMultiValuePairs","postLoadMul","atomReductionMap","filterAtoms","patoms","raid","removeNegative","patomsMap","identityMap","bondsToRemove","beginIn","endIn","postLoadSru","postLoadSup","postLoadGen","postLoadDat","loadSGroup","postLoadMap","initSGroup","sGroups","propData","kv","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_slicedToArray","TYPES","applySGroupProp","propName","numeric","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","applySGroupArrayProp","sid","num","toIntArray","applyDataSGroupName","applyDataSGroupQuery","applyDataSGroupQueryOp","applyDataSGroupDesc","sGroup","applyDataSGroupInfo","nCharsToDisplay","_vec2","applyDataSGroupInfoLine","applyDataSGroupData","finalize","trimRight","applyDataSGroupDataLine","strArray","_vec","_pool","numStr","itemLength","rxnMerge","mols","nReactants","nProducts","nAgents","shiftMol","xorig","over","add_","mergeInto","_index2","bbReact","bbAgent","bbProd","molReact","molAgent","molProd","bondLengthData","totalLength","bondLengthDataMol","getBondLengthData","SHOULD_RESCALE_MOLECULES","avgBondLength","getCoordBoundingBoxObj","fragmentType","FRAGMENT","REACTANT","PRODUCT","AGENT","rxnFragmentType","bb1","bb2","bbReactAll","bbProdAll","rxnPluses","RxnPlus","v1","v2","RxnArrow","lc2","isReaction","bondTypeMap","Bond","PATTERN","SINGLE","DOUBLE","TRIPLE","AROMATIC","5","SINGLE_OR_DOUBLE","6","SINGLE_OR_AROMATIC","7","DOUBLE_OR_AROMATIC","ANY","bondStereoMap","0","STEREO","NONE","UP","EITHER","DOWN","CIS_TRANS","v30bondStereoMap","bondTopologyMap","TOPOLOGY","RING","CHAIN","atomLinePartition","bondLinePartition","atomListHeaderPartition","atomListHeaderLength","atomListHeaderItemLength","chargeMap","valenceMap","implicitHydrogenMap","v30atomPropMap","CHG","RAD","MASS","VAL","HCOUNT","INVRET","SUBST","UNSAT","RBCNT","rxnItemsPartition","parseAtomLine","atomLine","atomSplit","massDifference","Atom","parseBondLine","bondLine","bondSplit","parseAtomListLine","atomListLine","AtomList","parsePropertyLines","ctab","rLogic","propValue","isPseudo","propertyData","_parseSGroup2","rglabels","a2rs","a2ri","a2r","iii","hhh","ooo","logic","pool","parsePropertyLineAtomList","applyAtomProp","propVal","atomCount","bondCount","atomListCount","stextLinesCount","propertyLinesCount","atomLines","bondLines","atomListLines","psg","emptyGroups","allAtoms","RGroup","coreLines","fragmentLines","frag","strId","rgMerge","frid","labelsListToIds","hdr","lst","_parseSGroup","parseAtomLineV3000","subsplit","spaceparsplit","atomListParams","splitonce","ival","rgrsplit","parseBondLineV3000","v3000parseCollection","v3000parseSGroup","stripV30","splitSGroupDef","parseBracedNumberList","brkxyzStrs","brkxyz","stripQuotes","vals","readRGroups3000","rfrags","rfrag","rlsplit","molLinesReactants","molLinesProducts","rGroups","assert","molLines","pc","i0","quoted","delim","braceBalance","propChunks","field","CisTrans","neighborsFunc","getNeighbors","swap","i1","i2","PARITY","CIS","TRANS","getParity","parity","getSubstituents","substituents","sameside","beg","neiBeg","neiEnd","norm","normBeg","normEnd","prodBeg","dot","prodEnd","samesides","iBeg","iEnd","iNeiBeg","iNeiEnd","sortSubstituents","h0","pureHydrogen","h1","h2","h3","isGeomStereoBond","bondIdx","label1","label2","neiBegin","neiЕnd","nei","build","excludeBonds","Dfs","atomData","atom_data","nComponentsInReactants","vertices","VertexDesc","edges","EdgeDesc","v_seq","dfs_state","parent_vertex","parent_edge","branches","opening_cycles","closing_cycle","SeqElem","vIdx","parVertex","parEdge","walk","vStack","cid","selected","parentVertex","seqElem","atomD","neighbours","neiIdx","edgeIdx","edgeClosingCycle","eIdx","numBranches","numOpeningCycles","Smiles","smiles","writtenAtoms","writtenComponents","ignore_errors","_cis_trans","_dfs","_stereocenters","_Atom","hСount","aromatic","lowercase","chirality","branch_cnt","paren_written","h_count","isBondInRing","inLoop","sortNeighbors","setImplicitHydrogen","implicitH","allowedLowercase","prepareLoopStructure","bondsInLoops","loops","loop","hbs","hbids","hbid","halfBonds","union","touchedCistransbonds","markCisTrans","componentsAll","_dfs2","seqEl","vPrevIdx","openingCycles","stereocenters","_stereocenters2","buildFromBonds","sc","atomIdx","implicitHIdx","pyramid","pyramidMapping","isPyramidMappingRigid","alert","cycleNumbers","firstComponent","writeAtom","writeCycleNumber","calcBondDirection","comma","writeRadicals","needBrackets","hydro","cis_trans","_cis_trans2","dbonds","ctbond_beg","ctbond_end","saved","aromFailBeg","aromFailEnd","updateSideBonds","subst","sidebonds","findBondId","n1","n2","n3","n4","vprev","ntouched","marked","RADICAL","SINGLET","DOUPLET","Stereocenters","alleneMask","neiList","nei1","nei2","nei1nei","nei2nei","stereocenter","buildOneCenter","allowed_stereocenters","elem","degree","n_double_bonds","implicit_degree","implicitDegree","edgeIds","lastAtomDir","nDoubleBonds","nPureHydrogens","neiAtom","edge_idx","nei_idx","rank","vec","as","main1","main2","side1","side2","mainDir","getBondStereo","xyz1","xyz2","xyzzy","stereo0","stereo1","stereo2","nUp","nDown","xyz","centerIdx","sine1","cross","cosine1","sine2","cosine2","v3","rigid","attrGetDefault","pseudo","checkPseudo","ifDef","valence","_atomlist2","neighbors","badConn","radicalElectrons","TRIPLET","_atomlist","getAttrHash","attrlist","fidMap","isQuery","isPlainCarbon","hasRxnProps","calcValence","conn","groupno","hyd","absCharge","calcValenceMinusHyd","hb1","hb2","sb","sa","center","REACTING_CENTER","NOT_CENTER","UNMARKED","CENTER","UNCHANGED","MADE_OR_BROKEN","ORDER_CHANGED","MADE_OR_BROKEN_AND_CHANGED","getCenter","p1","p2","getDir","normalized","aidMap","cp","Struct","_sgforest2","HalfBond","ang","contra","leftSin","leftCos","leftNeighbor","rightSin","rightCos","rightNeighbor","Loop","isConvex","_this12","dblBonds","convex","hb","_bond2","arrayAddIfMissing","_box2abs","_atom","_bond","_sgroup","_rgroup","_sgforest","hasRxnArrow","isBlank","bondSet","dropRxnSymbols","fnum","getFragmentIds","keepAllRGroups","fidMask","rgroupsIds","rgroup","keepGroup","bidMap","_sgroup2","bondInitHalfBonds","halfBondUpdate","dist","turnLeft","oxAngle","_this4","setHbNext","halfBondSetAngle","hbl","atomAddNeighbor","ir","il","atomSortNeighbors","_this5","nextNei","_this6","atomUpdateHalfBonds","_this7","updateHalfBonds","_this8","sGroupsRecalcCrossBonds","_this9","neiAtoms","sgid","_this10","atomSetPos","rxnPlusSetPos","rxnArrowSetPos","getCoordBoundingBox","_this11","getAvgBondLength","bld","getAvgClosestAtomDistance","minDist","totalDist","checkBondExists","findConnectedComponent","firstaid","_this13","neiId","findConnectedComponents","discardExistingFragments","_this14","addedAtoms","markFragment","idSet","_this15","_this16","comp","scaled","rescale","avg","loopHasSelfIntersections","hbi","ai","bi","hbj","aj","bj","_box2abs2","segmentIntersection","partitionLoop","subloops","continueFlag","atomToHalfBond","aid1","aid2","subloop","halfBondAngle","hbid1","hbid2","hba","hbb","loopIsConvex","_this17","loopArr","loopIsInner","_this18","totalAngle","hbida","hbidb","findLoops","_this19","newLoops","bondsToMark","hbIdNext","loopId","hbId","_toConsumableArray","atomAddToSGroup","addAtom","calcConn","calcImplicitHydrogen","_calcConn","_calcConn2","isAromatic","correctConn","hasImplicitH","_this20","_this21","connectedComponents","barriers","arrowPos","submolTexts","defineRxnFragmentTypeForAtomset","atomset","arrowpos","getBondFragment","_atom2","_rgroup2","getAttrs","findRGroupByFragment","SGroupForest","order","getAtomSets","getAtomSetRelations","newId","isStrictSuperset","isSubset","atomSets","isSuperset","parents","childId","getPathToRoot","parentId","id1","id2","sg1","sg2","intersection","guess","childs","areas","highlight","highlighting","selectionPlate","getAttr","setAttr","checkAttr","newAtoms","removeAtom","xbonds","contentBoxes","ext","bba","bbb","p0","include","vext","BracketParams","bracketWidth","sz","cl","cr","bracketHeight","negated","b1","b2","cl0","cr0","dr","dl","getObjBBox","getBonds","xAtom1","xAtom2","crossBond","bond1","bond2","amap","tailAtom","newBond","newCrossBond","xBond2","fromAromaticTemplateOnBond","restruct","template","simpleFusing","tmpl","beforeMerge","getFragmentWithBondMap","afterMerge","pasteItems","_action2","canBeAromatized","aromatizeStruct","astruct","atmpl","aromatizeAction","fromAromatize","aromTemplate","templateFusingAction","dearomatizeStruct","destruct","dearomatizeAction","fromDearomatize","addOp","_op2","BondAttr","dastruct","hasAromLoop","atomsInStruct","_op","_action","fromAtomAddition","FragmentAdd","AtomAdd","fromAtomDeletion","atomsToRemove","atomGetNeighbors","BondDelete","atomGetDegree","removeAtomFromSgroupIfNeeded","AtomDelete","removeSgroupIfNeeded","_fragment","fromFragmentSplit","fromAtomsAttrs","AtomAttr","fromAtomMerge","srcId","dstId","fragAction","mergeFragmentsIfNeeded","mergeBondId","BondAdd","_attrs","atomGetAttr","frid2","fromRGroupFragment","fromUpdateIfThen","fridAtoms","mergeSgroups","FragmentDelete","srcAtoms","dstAtom","atomGetSGroups","notExpandedContexts","_without3","SGroupAtomAdd","fromNewCanvas","CanvasLoad","fromDescriptorsAlign","AlignDescriptors","fromBondAddition","pos2","_utils3","atomForNewBond","operations","fromBondDeletion","fromBondsAttrs","fromBondsMerge","mergeMap","atomPairs","bondCI","mergeBondsParams","merged","fromBondFlipping","bondChangingAction","itemID","bondProps","plainBondTypes","bondFlipRequired","fromChain","nSect","atomId","chainItems","id0","fromChiralFlagAddition","chiralFlags","posY","ChiralFlagAdd","fromChiralFlagDeletion","ChiralFlagDelete","fromItemsFuse","usedAtoms","getItemsToFuse","editor","mergeItems","closestToMerge","findMerge","getHoverToFuse","hoverItems","closestMap","fromMultipleMove","lists","atomsToInvalidate","bondlist","BondMove","reloops","visel","LoopMove","AtomMove","sgroupData","getRelSgroupsBySelection","SGroupDataMove","rxnArrow","RxnArrowMove","rxnPulse","RxnPlusMove","sgData","ChiralFlagMove","processAtom","newfrid","usedIds","rgForRemove","fromFragmentDeletion","selection","frids","actionRemoveDataSGroups","fromSgroupDeletion","frid3","RxnArrowDelete","RxnPlusDelete","fromPaste","pstruct","point","xy0","getStructCenter","fridMap","tmpAtom","operation","newsgid","sgAtoms","fromSgroupAddition","oper","RxnArrowAdd","plus","RxnPlusAdd","_chiralFlag","RGroupFragment","ifThen","newRgId","fromRGroupAttrs","xmin","ymin","xmax","ymax","fromArrowAddition","fromArrowDeletion","fromPlusAddition","fromPlusDeletion","RGroupAttr","rgidNew","rgidOld","skipRgids","UpdateIfThen","fromFlip","structSelection","fids","acc","calcCenter","flipItemByCenter","fromRotate","rotateDelta","arrow","pid","did","fromBondAlign","calcAngle","getFragmentAtoms","fromSeveralSgroupAddition","fValue","localAttrs","fromSgroupAttrs","SGroupAttr","sGroupAttributeAction","sG","SGroupRemoveFromHierarchy","SGroupAtomRemove","SGroupDelete","SGroupCreate","SGroupAddToHierarchy","asteriskAction","plainCarbon","fromSgroupAction","newSg","sourceAtoms","_constants","SgContexts","fromBondAction","atomsFromBonds","getAtomsFromBonds","newSourceAtoms","_uniq3","Fragment","fromGroupAction","Multifragment","fromMultiFragmentAction","Group","fromAtomAction","targetAtoms","allFragments","fragId","getAtomsBondIds","currSelection","bondid","sgCounts","fromTemplateOnCanvas","_paste","extraBondAction","additionalAtom","middleAtom","actionRes","get_xy0","fromTemplateOnAtom","extraBond","extraRes","angle0","fromTemplateOnBondAction","force","fromTemplateOnBond","_aromaticFusing","tmplBond","tmplBegin","atomsMap","bondAtoms","_utils$mergeBondsPara","mergeA","_closest2","tBond","existId","_closest","atomGetPos","neiPos","maxI","maxAngle","neiNeighbours","neiV","neiAngle","neiNei","neiNeiPos","vDiff","selectedAtoms","_difference3","Editor","clientArea","_render2","SCALE","_selection","_tool","historyStack","historyPtr","_subscription2","elementEdit","bondEdit","rgroupEdit","sgroupEdit","sdataEdit","quickEdit","attachEdit","change","selectionChange","domEventSetup","isMouseRight","which","button","eventName","subs","EditorTool","tool","lastEvent","recoordinate","rp","setScrollOffset","getVBoxObj","elementOffset","offsetTop","offsetLeft","offsetParent","_subscription","_render","_basic","structObjects","_tool2","_struct2","zoom","setMolecule","setZoom","ci","setSelection","newTool","highlightTargets","visible","rnd","mp","setHighlight","item1","item2","ignoreHistory","isDummy","HISTORY_SIZE","historySize","undo","redo","findItem","maps","_ui_editor","page2obj","pageX","pageY","srcItems","explicitSelected","structSelected","alignDescriptors","Action","findClosestAtom","closestAtom","maxMinDist","SELECTION_DISTANCE_COEFFICIENT","skipId","findClosestBond","closestBond","closestBondCenter","minCDist","mid","cdist","findClosestChiralFlag","findClosestDataSGroupData","box","dataArea","inBox","xDist","findClosestFrag","findClosestRGroup","labelBox","centre","findClosestRxnArrow","findClosestRxnPlus","findClosestSGroup","pg","findClosestItem","findMaps","findCloseMerge","execute","_inverted","_isDummy","_restruct","ReAtom","markAtom","clearVisel","markItemRemoved","data2","invalidateAtom","noinvalidate","_scale2","obj2scaled","ReSGroup","relations","DEBUG","debug","ReBond","markBond","invalidateBond","rebond","loopRemove","invalidateLoop","ReFrag","invalidateItem","rgp","rgid_new","rg_new","rgid_old","rg_old","markItem","rgNew","ReRGroup","rgOld","ifThenHistory","RestoreIfThen","history","rgValue","arid","ReRxnArrow","_struct$getComponents","plid","ReRxnPlus","oldStruct","clearVisels","ReChiralFlag","structBox","alignPoint","RestoreDescriptorsPosition","lid1","lid2","_scale","logcnt","logmouse","hl","logMethod","setFracAngle","FRAC","pos0","pos1","fracAngle","angle2","calcNewAtomPos","degrees","struct1","struct2","begin1","begin2","end1","end2","mergeAngle","_inRange3","BONDS_MERGE_ANGLE","BONDS_MERGE_SCALE","APointTool","newatom","AtomTool","atomProps","atomLongtapEvent","dragCtx","atomid","stopTapping","newAtomPos","AttachTool","attachPoints","attach","BondTool","xy1","xy","bondAddition","ChainTool","_chain","_closelyFusing","sectCount","_fromChain","_fromChain2","newItems","mouseleave","ChargeTool","ChiralFlagTool","EraserTool","lassoHelper","_lasso2","_lasso","_reaction","running","addPoint","LassoHelper","_locate","_draw","getSelection","_locate2","inPolygon","points","inRectangle","dp","_draw2","selectionPolygon","selectionRectangle","getElementsInRectangle","bondList","x0","y0","rxnArrowsList","rxnPlusesList","chiralFlagList","sgroupDataList","getElementsInPolygon","rr","isPointInPolygon","v0","n0","d0","w0","flag1","flag0","w1","d1","_rgroupatom","_select","_eraser","_template","_charge","_rgroupfragment","_apoint","_attach","_reactionarrow","_reactionplus","_reactionmap","_reactionunmap","_rotate","rgroupatom","_rgroupatom2","select","_select2","eraser","_eraser2","_chain2","chiralFlag","_chiralFlag2","_template2","_charge2","rgroupfragment","_rgroupfragment2","apoint","_apoint2","_attach2","reactionarrow","_reactionarrow2","reactionplus","_reactionplus2","reactionmap","_reactionmap2","reactionunmap","_reactionunmap2","paste","_paste2","_rotate2","PasteTool","_fromPaste","_fromPaste2","_fromPaste3","_fromPaste4","ReactionArrowTool","ReactionMapTool","isValidMap","rcs","ri","ro","pi","po","updateLine","selectionLine","atom1","atom2","aam1","aam2","ReactionPlusTool","ReactionUnmapTool","RGroupAtomTool","propsDialog","RGroupFragmentTool","newRg","RotateTool","singleBond","rotId","rotAll","neiHb","angle1","expSel","SelectTool","closestToSel","selMerge","reversible","uniqArray","isSelected","dest","_xor3","selectFragment","sel","fragGetAtoms","fragGetBonds","dblclick","ra","rb","newbond","sgroupDialog","SGroupTool","_isEqual2","defaultType","getContextBySgroup","getContextBySelection","checkOverlapping","fromContextType","manyComponentsSelected","singleComponentSelected","anyChainedBonds","allBondsSelected","fixedBond","countOfSelectedComponents","_isEqual","searchMaps","TemplateTool","findItems","getSign","frIds","sign1","sign2","_fromTemplateOnBondAc","_fromTemplateOnBondAc2","extra_bond","_fromTemplateOnAtom","_fromTemplateOnAtom2","_fromTemplateOnCanvas","_fromTemplateOnCanvas2","_fromTemplateOnAtom3","_fromTemplateOnAtom4","_ref3","_ref4","_fromTemplateOnCanvas3","_fromTemplateOnCanvas4","completeAction","_raphael","_raphael2","translateAbs","tfx","lineattr","bondSingle","makeStroke","bondSingleUp","b3","bondSingleStereoBold","a3","a4","bondDoubleStereoBold","sgBondPath","bondSingleDown","nlines","bsp","stereoBond","bondSingleEither","bondDouble","cisTrans","bondSingleOrDouble","bondSpace","bondTriple","bondAromatic","bondShift","l1","l2","bondAny","reactingCenter","pathdesc","topologyMark","fontszsub","recenterText","_util2","relBox","radicalCap","lineWidth","dw","dh","radicalBullet","b0","sgroupBracketStyle","lassoStyle","pstr","dashedPath","dash","t0","black","coordStr","aromaticBondPaths","mask","rbb","_raphaelExt2","gap","_util","_raphaelExt","Render","opt","renderWidth","renderHeight","userOpts","_restruct2","_options2","cumulativeOffset","curtop","curleft","calcExtend","sSz","ey","_options","view2obj","isRelative","scroll","scrollPos","useOldZoom","scaled2obj","obj2view","pagePos","setPaperSize","setOffset","newoffset","setScale","viewSz","changes","sf","autoScale","sz1","marg","autoScaleMargin","mv","csz","maxBondLength","sz2","UNIT","eb","vb","oldCb","oldBb","scaleFactor","rotationStep","labelFontSize","subFontSize","showAtomIds","showBondIds","showHalfBondIds","showLoopIds","hideChiralFlag","showValenceWarnings","atomColoring","hideImplicitHydrogen","hideTerminalLabels","carbonExplicitly","showCharge","showHydrogenLabels","showValence","aromaticCircle","doubleBondWidth","stereoBondWidth","fontsz","fontRLabel","fontRLogic","bondThickness","selectionStyle","highlightStyle","atomSelectionPlateRadius","ReStruct","initialized","layers","initLayers","ccFragmentType","clearMarks","structChanged","_reatom2","_rebond2","lid","_reloop2","_rerxnplus2","_rerxnarrow2","_refrag2","_rergroup2","_resgroup2","_redatasgroupdata2","_rechiralflag2","isSelectionEmpty","scaleRPath","scaleVisel","_reatom","_rebond","_rerxnplus","_rerxnarrow","_refrag","_rergroup","_redatasgroupdata","_rechiralflag","_resgroup","_reloop","LAYER_MAP","background","warnings","indices","connectedComponentRemoveAtom","cc","clearConnectedComponents","getConnectedComponent","adjacentComponents","_aid","neighbor","addConnectedComponent","compId","aidSet","removeConnectedComponent","ccid","assignConnectedComponents","addReObjectPath","fromRelBox","mapChanged","eachItem","vbox","atomsChanged","calcBBox","atomsChangedArray","verifyLoops","updLoops","updateLoops","showLabels","showBonds","showLoops","showReactionSymbols","showSGroups","showFragments","showRGroups","showChiralFlags","reloop","rlid","rxnArrowsChanged","rxnPlusesChanged","draw","isValid","chiralFlagsChanged","chid","bondsChanged","_this22","redraw","isSelectable","showItemSelection","exists","makeSelectionPlate","showLabel","hydrogenOnTheLeft","isLabelVisible","visibleTerminal","displayHydrogen","hydrogenLabels","setHydrogenPos","yr","nl","nr","buildLabel","getLabelText","_elementColor","pathAndRBoxTranslate","showHydroIndex","implh","rightMargin","hydroIndex","showRadical","hshift","vshift","showIsotope","leftMargin","showExplicitValence","mapValence","11","14","showHydrogen","hydrogenLeft","hydrogen","showWarning","showAttpnt","lsb","attpntText","attpntPath1","attpntRbb","lsbn","shiftRayBox","shiftBondEnd","arrowLeft","arrowRight","attpntPath","getAamText","aamText","getQueryAttrsText","queryAttrsText","bisectLargestSector","angles","da","daMax","exts","_reobject","_reobject2","boundingBox","drawHighlight","makeHighlightPlate","styles","isHydrogen","aamPath","aamBox","doubleBondShift","findIncomingStereoUpBond","bid0","includeBoldStereoBond","neibond","boldStereo","findIncomingUpBonds","halfbonds","neihbid1","neihbid2","checkStereoBold","getBondPath","shiftA","shiftB","getBondSingleStereoBoldPath","getBondSingleUpPath","getBondSingleDownPath","getBondSingleEitherPath","getBondDoubleStereoBoldPath","getBondDoublePath","getBondAromaticPath","getSingleOrDoublePath","coords","stereoUpBondGetCoordinates","coords1","coords2","getBondLineShift","neihbid","neihb","cosHalf","biss","interval","s1","s2","dashdotPattern","getAromaticBondPaths","getReactingCenterPath","lw","bs","alongIntRc","alongIntMadeBroken","alongSz","acrossInt","acrossSz","getTopologyMark","getIdsPath","bondIdxOff","param1","param2","pb","lc","ipath","irbb","setDoubleBondShift","loop1","loop2","d2","selectDoubleBondShift","selectDoubleBondShiftChain","bondRecalc","nLeft","nRight","highlightPath","ReDataSGroupData","firstFrag","secondFrag","highLight","keyOf","warn","ReLoop","_visel2","radius","_visel","apos","bpos","pathStr","halfAngle","qi","ReObject","viselType","noredraw","rGroupdrawBrackets","leftBracket","rightBracket","rLogicToString","rangeExists","restH","nextRg","BORDER_EXT","bbf","labelSet","logicStyle","logicPath","logicBox","drawing","SGroupdrawBrackets","lowerIndexText","upperIndexText","indexAttribute","renderIndex","indexPos","bracketR","indexPath","indexBox","showValue","drawGroupDat","definePP","drawAttachedDat","drawAbsoluteDat","topLeftPoint","descriptorIntersects","sgBottomRightPoint","bottomRightPoint","sbox","nameI","boxI","sboxI","tl","tr","tb","dt","db","remol","Visel","boxes","rc","rd","nid","atomCuts","shortcut","force-update","qs-serialize","molStr","molQs","hasSelection","dontClipMessage","_tools","_atoms","_zoom","_server","_debug","_templates","_cliparea","new","_tools2","dialog","disabled","cut","actions","settings","help","about","reaction-automap","server","app","period-table","select-all","selectionTool","toolbar","visibleTools","deselect-all","select-descriptors","_server2","_debug2","_atoms2","_zoom2","_templates2","serverTransform","arom","dearom","cip","analyse","miew","Miew","templateLib","template-lib","templates","_structSchema","_structconv","toolActions","select-lasso","select-rectangle","select-fragment","erase","chiral-flag","charge-plus","charge-minus","transform-rotate","transform-flip-h","transform-flip-v","sgroup-data","reaction-arrow","reaction-plus","reaction-map","reaction-unmap","rgroup-label","rgroup-fragment","rgroup-attpoints","bondCuts","single","double","triple","down","updown","crossed","typeSchema","enum","enumNames","toBondType","zoomList","zoom-out","_findIndex3","zoom-in","_findLastIndex3","_preactRedux","_editor","_structeditor","AppEditor","_editor2","_structeditor2","_preact","_toolbar","_hotkeys","AppHidden","onInitTmpls","cacheEl","initTmplLib","_class2","_temp","_ret","_classCallCheck","_possibleConstructorReturn","_inherits","_createClass","initIcons","AppCliparea","initClipboard","_cliparea2","_state2","initKeydownListener","_toolbar3","initResize","App","load","structStr","_state","_hidden","_modal","onAction","checkServer","role","_toolbar2","_modal2","_dialog","modal","onOk","onCancel","initProps","_omit3","onResult","AppModal","_objectWithoutProperties","Modal","_dialog2","ZoomList","onChange","ev","AtomsList","isAtom","_actionmenu","shortcutStr","_classnames2","onClick","TemplatesList","isTmpl","_icon2","_classnames","_icon","mainmenu","menu","toolbox","elements","actionState","activeTool","freqAtoms","opened","onOpen","menuName","_actionmenu2","shortcutAliasMap","isMenuOpened","currentNode","hiddenAncestor","classList","showMenuOrButton","ActionButton","ActionMenu","_ref$status","toolMargin","openHandle","iconHeight","innerHeight","innerWidth","tools","marginTop","hiddenEl","currentTarget","isMac","Escape","Delete","Mod","isFormElement","autofocus","cliparea","_copy","ieCb","curFmt","fmt","formats","enabled","queryCommandSupported","execCommand","ClipboardEvent","clipboardData","ClipArea","focused","onCopy","onCut","onPaste","en","contentEditable","autoFocus","_w3cKeyname","Dialog","_props","_props$result","_props$valid","_w3cKeyname2","activeElement","activeTextarea","querySelector","_props2","_props2$params","_props2$result","_props2$valid","_props2$buttons","buttons","onSubmit","onKeyDown","keyDown","tabIndex","oneOrMore","multipl","ButtonList","disabledIds","multiple","ComboBox","suggestsHidden","updateInput","textContent","_props$type","suggestList","onMouseDown","onBlur","onInput","autoComplete","Label","labelPos","Field","_context","stateStore","_stateStore$field","dataError","fieldOpts","formField","_input2","data-error","propSchema","customValid","_ref3$serialize","serialize","_serialize","_ref3$deserialize","deserialize","_deserialize","_jsonschema2","serializeRewrite","deserializeRewrite","serializeMap","deserializeMap","getInvalidMessage","invalidMessage","getErrorsObj","errs","_jsonschema","_input","_form","Form","onUpdate","_this$schema$serializ","newstate","_schema$serialize","_onChange","_defineProperty","updateState","updateFormState","SelectOneOf","selectDesc","GenericInput","_ref$type","TextArea","CheckBox","checked","Select","onSelect","enumSchema","FieldSet","_ref5","_ref5$type","cbOrIndex","isTypeValue","inputCtrl","singleSelectCtrl","testVal","multipleSelectCtrl","ctrlMap","_ref6","componentMap","_ref7","shallowCompare","isNumber","selectedIndex","fieldset","querySelectorAll","inp","Input","_ref8","ctrl","_ref9","convertValue","measureFrom","measureTo","measureMap","MeasureInput","cust","meas","calcValue","handleChange","handleMeasChange","convValue","cm","inch","SelectCheckbox","SelectList","splitIndexes","isSplitIndex","checkInSystem","availableFontsPromises","commonFonts","fontName","_fontFaceObserver2","subfontname","_fontFaceObserver","SystemFonts","availableFonts","setAvailableFonts","results","MeasureLog","oldProps","setupEditor","toolOpts","_upperFirst3","removeEditorHandlers","_measurelog","StructEditor","onInit","_props$Tag","Tag","_measurelog2","renderStruct","prerender","StructRender","_props2$Tag","Accordion","_props$multiple","captions","caption","onActive","atomClass","metPrefix","Icon","xlinkHref","fileOpener","throughFileReader","fso","throughFileSystemObject","msClose","fd","OpenTextFile","ReadAll","Close","OpenButton","opener","files","_props$onLoad","onLoad","_props$onError","onError","_props2$className","btn","accept","fileSaver","_filesaver2","_filesaver","SaveButton","_ref$filename","filename","_ref$className","_props$onSave","onSave","Spin","Tabs","changeTab","VirtualList","resize","handleScroll","sync","equal","rowHeight","_props$overscanCount","overscanCount","renderRow","visibleRowCount","STYLE_INNER","STYLE_CONTENT","normalizeKeyName","alt","mod","normalizeKeyMap","modifiers","rusToEng","normalizeKeyEvent","isChar","keyNorm","KeyboardEvent","lookup","baseName","fromElement","selem","fromRlabel","fromAtomList","fromAtom","ap","fromApoint","toElement","toRlabel","toAtomList","toApoint","_capitalize3","toAtom","satom","chargeRegexp","pch","conv","sap","primary","secondary","fromBond","sbond","fromBondType","toBond","bondCaptionMap","fromSgroup","ssgroup","_ssgroup$attrs","radiobuttons","_sdataSchema","sdataSchema","toSgroup","singledouble","singlearomatic","doublearomatic","strict","molMatch","serverOpts","moldata","_smiles2","converting","output_format","mime","fromString","withCoords","supportsCoords","formatError","couldBeSaved","ind","_smiles","rxn","smiles-ext","smarts","inchi","inchi-aux","cml","getDefaultOptions","optionsSchema","validation","_v$validate","errProps","resetToSelect","smart-layout","ignore-stereochemistry-errors","mass-skip-error-on-pseudoatoms","gross-formula-add-rsites","gross-formula-add-isotopes","SERVER_OPTIONS","miewMode","miewTheme","miewAtomLabel","MIEW_OPTIONS","mapOf","selectListOf","ds","firstKeyOf","getSdataDefault","_schemaHelper","radioButtonsSchema","contextSchema","sData","sdataCustomSchema","rgroupSchema","_range3","labelEdit","attachmentPoints","sgroupMap","rgroupLogic","minium","GenSet","_ref$caption","GenGroup","gen","pk","viewSchema","GenericGroups","_selected","_onSelect","summary","_generics2","_generics","group/acyclic","group/cyclic","group/acyclic/carbo","group/acyclic/hetero","group/cyclic/carbo","group/cyclic/hetero","atom/any","atom/no-carbon","atom/metal","atom/halogen","group/cyclic/no-carbon","group/cyclic/hetero/aryl","Header","TypeChoise","MainRow","row","refer","curEvents","colSpan","OutinerRow","AtomInfo","isInfo","numberStyle","elemStyle","mapSelectionToProps","_tabs","_genericGroups","_state5","beforeSpan","main","lanthanides","actinides","PeriodTable","onMouseEnter","onMouseLeave","genType","firstType","pl","_state3","tabs","_state4","_tabs2","changeType","ElementsTable","_genericGroups2","callbacks","addAtoms","_open","_analyse","_recognize","_periodTable","_templateAttach","_templateLib","_about","_help","_miew","_automap","_check","_labeledit","_rgroupLogic","_save","_sdata","_open2","_analyse2","_recognize2","_periodTable2","_templateAttach2","_templateLib2","_about2","_help2","_miew2","_automap2","_check2","_labeledit2","_rgroupLogic2","_save2","sdata","_sdata2","About","FrozenInput","spellCheck","allowMovement","formulaInputMarkdown","FormulaInput","errorRegexp","cnd","formulaRegexp","movementKeys","roundOff","Analyse","onAnalyse","onChangeRound","roundWeight","roundMass","roundName","changeRound","getOptionName","checkSchema","checkOptions","Check","formState","checkState","onCheck","_formState$result","_result","moleculeErrors","_form2","ErrorsCheck","moleculeErrorsTypes","checkOpts","Help","createMiewOptions","theme","autoPreset","editing","inversePanning","reps","textMode","TXoptions","_structformat","structFormat","_optionsSchema","BACKGROUND_COLOR","dark","light","MIEW_TX_TYPES","no","bright","colorer","blackAndWhite","bg","showBg","MiewComponent","miewOpts","viewer","miewContainer","sourceType","fileType","setOptions","cmlStruct","exportCML","onExportCML","_pick3","structAcceptMimes","_openbutton","Open","_openbutton2","changeStructStr","changeFragment","text/plain","Settings","initState","onOpenFile","onReset","appOpts","_savebutton2","_form3","_optionsSchema2","_accordion2","_selectCheckbox2","_systemfonts2","_measureInput2","_storageExt","storage","isAvailable","warningMessage","_accordion","_savebutton","_measureInput","_systemfonts","_selectCheckbox","newOpts","setDefaultSettings","saveSettings","Recognize","partProps","onRecognize","isFragment","onImage","onChangeImago","_spin2","_structrender2","_structrender","_spin","shouldFragment","changeImage","ver","changeVersion","saveSchema","Save","isRxn","textarea","onResetForm","isCleanStruct","onTmplSave","readOnly","getServerSettings","saveUserTmpl","initTmpl","normTmpl","structNormalization","normStruct","cbb","rxnPlus","getScale","EDITOR_STYLES","Attach","onNameEdit","onAttachEdit","initAttach","setAttachPoints","setTmplName","tmplName","_chunk3","greekify","greekRe","GREEK_SIMBOLS","filterLib","lib","_escapeRegExp3","_flow3","_filter4","_reduce3","libRows","COLS","RenderTmpl","_reselect","_sdf","_visibleview","Alpha","Beta","beta","Gamma","gamma","filterLibSelector","libRowsSelector","TemplateLib","onAttach","onFilter","onChangeGroup","_sdf2","_visibleview2","changeFilter","selectTmpl","changeGroup","editTmpl","ElementNumber","atomValid","ch","chargeValid","maxlength","AttachmentPoints","Automap","automapSchema",":","^^","LabelEdit","letter","_valid","IfThenSelect","rgids","RgroupLogic","rgroupLabels","rangeConv","_buttonlist2","_buttonlist","SelectInput","inputSelect","_combobox2","SData","formSchema","_combobox","Sgroup","apiServer","ketcherWindow","_app2","_app","actObj","_isEqual3","_pickBy3","_isEmpty3","initEditor","selectMode","resetOption","updateAction","_debounce3","onSelectionChange","onElementEdit","dlg","openDialog","onQuickEdit","onBondEdit","onRgroupEdit","onSgroupEdit","onSdataEdit","onMessage","onAromatizeStruct","serverCall","onDearomatizeStruct","hotKeys","initHotKeys","keyHandle","actionTool","_keynorm2","atomsSelected","_shared","checkGroupOnTool","actName","clipArea","newAction","setHotKey","act","debAction","loadStruct","clipData","rxnTextPlain","_keynorm","sh","initOptionsState","initTmplsState","_reduxThunk2","_redux","_reduxThunk","checkErrors","formReducer","formName","sdataReducer","formsState","initSdata","dialogName","modalReducer","correctErrors","actionContext","actionFieldName","onContextChange","onFieldNameChange","payload","_state$result","appUpdate","newSettings","setItem","setStruct","isFrag","optionsReducer","recognizeActions","getItem","rec","ketcherCheck","checkParams","badVal","optsTypes","_getState","ketcherErrors","_getState2","reindexMap","getReindexMap","updateLocalStore","_initLib","initLib","userLib","templatesReducer","tmplActions","attachActions","_initLib2","baseUrl","prefetchStatic","tmpls","prefetchRender","cachedFiles","pr","prefetchSplit","userTmpls","resp","svgs","svgContent","updateVisibleTools","visibleTool","regExp","menuHeight","_throttle3","addFreqAtom","MAX_ATOMS","currentAtom","atomLabel","toolInMenu","toolName","dropdown","findEl","initial","newState","correctTools","localStorage","isSet","Box2Abs","lp","dc","dd","Pile","setB","subset","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","filterFunc","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","Pool","_nextId","_get","Vec2","si","co","f1","f2","getSmiles","saveSmiles","structformat","getMolfile","molString","ui","addFragment","showMolfile","bondLength","_queryString","_api","_ui","_queryString2","api_path","apiPath","_api2","_ui2","buildInfo","buildDate","buildNumber"],"mappings":"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","file":"ketcher.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.1.20150716\n *\n * By Eli Grey, http://eligrey.com\n * License: X11/MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, webkit_req_fs = view.webkitRequestFileSystem\n\t\t, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t, fs_min_size = 0\n\t\t// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and\n\t\t// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047\n\t\t// for the reasoning behind the timeout and revocation flow\n\t\t, arbitrary_revoke_timeout = 500 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (view.chrome) {\n\t\t\t\trevoker();\n\t\t\t} else {\n\t\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t\t}\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([\"\\ufeff\", blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, blob_changed = false\n\t\t\t\t, object_url\n\t\t\t\t, target_view\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (blob_changed || !object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (target_view) {\n\t\t\t\t\t\ttarget_view.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar new_tab = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (new_tab == undefined && typeof safari !== \"undefined\") {\n\t\t\t\t\t\t\t//Apple do not allow window.open, see http://bit.ly/1kZffRI\n\t\t\t\t\t\t\tview.location.href = object_url\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t\t, abortable = function(func) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (filesaver.readyState !== filesaver.DONE) {\n\t\t\t\t\t\t\treturn func.apply(this, arguments);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t, create_if_not_found = {create: true, exclusive: false}\n\t\t\t\t, slice\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\tif (!name) {\n\t\t\t\tname = \"download\";\n\t\t\t}\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsave_link.href = object_url;\n\t\t\t\tsave_link.download = name;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Object and web filesystem URLs have a problem saving in Google Chrome when\n\t\t\t// viewed in a tab, so I force save with application/octet-stream\n\t\t\t// http://code.google.com/p/chromium/issues/detail?id=91158\n\t\t\t// Update: Google errantly closed 91158, I submitted it again:\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=389642\n\t\t\tif (view.chrome && type && type !== force_saveable_type) {\n\t\t\t\tslice = blob.slice || blob.webkitSlice;\n\t\t\t\tblob = slice.call(blob, 0, blob.size, force_saveable_type);\n\t\t\t\tblob_changed = true;\n\t\t\t}\n\t\t\t// Since I can't be sure that the guessed media type will trigger a download\n\t\t\t// in WebKit, I append .download to the filename.\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=65440\n\t\t\tif (webkit_req_fs && name !== \"download\") {\n\t\t\t\tname += \".download\";\n\t\t\t}\n\t\t\tif (type === force_saveable_type || webkit_req_fs) {\n\t\t\t\ttarget_view = view;\n\t\t\t}\n\t\t\tif (!req_fs) {\n\t\t\t\tfs_error();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfs_min_size += blob.size;\n\t\t\treq_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {\n\t\t\t\tfs.root.getDirectory(\"saved\", create_if_not_found, abortable(function(dir) {\n\t\t\t\t\tvar save = function() {\n\t\t\t\t\t\tdir.getFile(name, create_if_not_found, abortable(function(file) {\n\t\t\t\t\t\t\tfile.createWriter(abortable(function(writer) {\n\t\t\t\t\t\t\t\twriter.onwriteend = function(event) {\n\t\t\t\t\t\t\t\t\ttarget_view.location.href = file.toURL();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\tdispatch(filesaver, \"writeend\", event);\n\t\t\t\t\t\t\t\t\trevoke(file);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twriter.onerror = function() {\n\t\t\t\t\t\t\t\t\tvar error = writer.error;\n\t\t\t\t\t\t\t\t\tif (error.code !== error.ABORT_ERR) {\n\t\t\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\"writestart progress write abort\".split(\" \").forEach(function(event) {\n\t\t\t\t\t\t\t\t\twriter[\"on\" + event] = filesaver[\"on\" + event];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\twriter.write(blob);\n\t\t\t\t\t\t\t\tfilesaver.abort = function() {\n\t\t\t\t\t\t\t\t\twriter.abort();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.WRITING;\n\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t};\n\t\t\t\t\tdir.getFile(name, {create: false}, abortable(function(file) {\n\t\t\t\t\t\t// delete file if it already exists\n\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t\tsave();\n\t\t\t\t\t}), abortable(function(ex) {\n\t\t\t\t\t\tif (ex.code === ex.NOT_FOUND_ERR) {\n\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}), fs_error);\n\t\t\t}), fs_error);\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name, no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name || \"download\");\n\t\t};\n\t}\n\n\tFS_proto.abort = function() {\n\t\tvar filesaver = this;\n\t\tfilesaver.readyState = filesaver.DONE;\n\t\tdispatch(filesaver, \"abort\");\n\t};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd != null)) {\n define([], function() {\n return saveAs;\n });\n}\n","var dom = {};\n\nmodule.exports = dom;\n\n/**\n * @param {string} name\n * @return {Element}\n */\ndom.createElement = function (name) {\n return document.createElement(name);\n};\n\n/**\n * @param {string} text\n * @return {Text}\n */\ndom.createText = function (text) {\n return document.createTextNode(text);\n};\n\n/**\n * @param {Element} element\n * @param {string} style\n */\ndom.style = function (element, style) {\n element.style.cssText = style;\n};\n\n/**\n * @param {Node} parent\n * @param {Node} child\n */\ndom.append = function (parent, child) {\n parent.appendChild(child);\n};\n\n/**\n * @param {Node} parent\n * @param {Node} child\n */\ndom.remove = function (parent, child) {\n parent.removeChild(child);\n};\n","var Promise = require('promise');\nvar dom = require('./dom');\nvar Ruler = require('./ruler');\n\n/**\n * @constructor\n *\n * @param {string} family\n * @param [fontface.Descriptors] descriptors\n */\nvar Observer = function (family, descriptors) {\n descriptors = descriptors || {weight: 'normal'};\n\n /**\n * @type {string}\n */\n this['family'] = family;\n\n /**\n * @type {string}\n */\n this['style'] = descriptors.style || 'normal';\n\n /**\n * @type {string}\n */\n this['variant'] = descriptors.variant || 'normal';\n\n /**\n * @type {string}\n */\n this['weight'] = descriptors.weight || 'normal';\n\n /**\n * @type {string}\n */\n this['stretch'] = descriptors.stretch || 'stretch';\n\n /**\n * @type {string}\n */\n this['featureSettings'] = descriptors.featureSettings || 'normal';\n};\n\nmodule.exports = Observer;\n\n/**\n * @type {null|boolean}\n */\nObserver.HAS_WEBKIT_FALLBACK_BUG = null;\n\n/**\n * @type {number}\n */\nObserver.DEFAULT_TIMEOUT = 3000;\n\n/**\n * @return {string}\n */\nObserver.getUserAgent = function () {\n return window.navigator.userAgent;\n};\n\n/**\n * Returns true if this browser is WebKit and it has the fallback bug\n * which is present in WebKit 536.11 and earlier.\n *\n * @return {boolean}\n */\nObserver.hasWebKitFallbackBug = function () {\n if (Observer.HAS_WEBKIT_FALLBACK_BUG === null) {\n var match = /AppleWeb[kK]it\\/([0-9]+)(?:\\.([0-9]+))/.exec(Observer.getUserAgent());\n\n Observer.HAS_WEBKIT_FALLBACK_BUG = !!match &&\n (parseInt(match[1], 10) < 536 ||\n (parseInt(match[1], 10) === 536 &&\n parseInt(match[2], 10) <= 11));\n }\n return Observer.HAS_WEBKIT_FALLBACK_BUG;\n};\n\n/**\n * @private\n * @return {string}\n */\nObserver.prototype.getStyle = function () {\n return 'font-style:' + this['style'] + ';' +\n 'font-variant:' + this['variant'] + ';' +\n 'font-weight:' + this['weight'] + ';' +\n 'font-stretch:' + this['stretch'] + ';' +\n 'font-feature-settings:' + this['featureSettings'] + ';' +\n '-moz-font-feature-settings:' + this['featureSettings'] + ';' +\n '-webkit-font-feature-settings:' + this['featureSettings'] + ';';\n};\n\n/**\n * @param {string=} text Optional test string to use for detecting if a font is available.\n * @param {number=} timeout Optional timeout for giving up on font load detection and rejecting the promise (defaults to 3 seconds).\n * @return {Promise.}\n */\nObserver.prototype.check = function (text, timeout) {\n var testString = text || 'BESbswy',\n timeoutValue = timeout || Observer.DEFAULT_TIMEOUT,\n style = this.getStyle(),\n container = dom.createElement('div'),\n\n rulerA = new Ruler(testString),\n rulerB = new Ruler(testString),\n rulerC = new Ruler(testString),\n\n widthA = -1,\n widthB = -1,\n widthC = -1,\n\n fallbackWidthA = -1,\n fallbackWidthB = -1,\n fallbackWidthC = -1,\n\n that = this;\n\n rulerA.setFont('\"Times New Roman\", sans-serif', style);\n rulerB.setFont('serif', style);\n rulerC.setFont('monospace', style);\n\n dom.append(container, rulerA.getElement());\n dom.append(container, rulerB.getElement());\n dom.append(container, rulerC.getElement());\n\n dom.append(document.body, container);\n\n fallbackWidthA = rulerA.getWidth();\n fallbackWidthB = rulerB.getWidth();\n fallbackWidthC = rulerC.getWidth();\n\n return new Promise(function (resolve, reject) {\n /**\n * @private\n */\n function removeContainer() {\n if (container.parentNode !== null) {\n dom.remove(document.body, container);\n }\n }\n\n /**\n * @private\n *\n * Cases:\n * 1) Font loads: both a, b and c are called and have the same value.\n * 2) Font fails to load: resize callback is never called and timeout happens.\n * 3) WebKit bug: both a, b and c are called and have the same value, but the\n * values are equal to one of the last resort fonts, we ignore this and\n * continue waiting until we get new values (or a timeout).\n */\n function check() {\n if (widthA !== -1 && widthB !== -1 && widthC !== -1) {\n // All values are changed from their initial state\n\n if (widthA === widthB && widthB === widthC) {\n // All values are the same, so the browser has most likely loaded the web font\n\n if (Observer.hasWebKitFallbackBug()) {\n // Except if the browser has the WebKit fallback bug, in which case we check to see if all\n // values are set to one of the last resort fonts.\n\n if (!((widthA === fallbackWidthA && widthB === fallbackWidthA && widthC === fallbackWidthA) ||\n (widthA === fallbackWidthB && widthB === fallbackWidthB && widthC === fallbackWidthB) ||\n (widthA === fallbackWidthC && widthB === fallbackWidthC && widthC === fallbackWidthC))) {\n // The width we got doesn't match any of the known last resort fonts, so let's assume fonts are loaded.\n removeContainer();\n resolve(that);\n }\n } else {\n removeContainer();\n resolve(that);\n }\n }\n }\n }\n\n setTimeout(function () {\n removeContainer();\n reject(that);\n }, timeoutValue);\n\n rulerA.onResize(function (width) {\n widthA = width;\n check();\n });\n\n rulerA.setFont(that['family'] + ',sans-serif', style);\n\n rulerB.onResize(function (width) {\n widthB = width;\n check();\n });\n\n rulerB.setFont(that['family'] + ',serif', style);\n\n rulerC.onResize(function (width) {\n widthC = width;\n check();\n });\n\n rulerC.setFont(that['family'] + ',monospace', style);\n });\n};\n","var dom = require('./dom');\n\n/**\n * @constructor\n * @param {string} text\n */\nvar Ruler = function (text) {\n var style = 'display:inline-block;' +\n 'position:absolute;' +\n 'height:100%;' +\n 'width:100%;' +\n 'overflow:scroll;';\n\n this.element = dom.createElement('div');\n this.element.setAttribute('aria-hidden', 'true');\n\n dom.append(this.element, dom.createText(text));\n\n this.collapsible = dom.createElement('span');\n this.expandable = dom.createElement('span');\n this.collapsibleInner = dom.createElement('span');\n this.expandableInner = dom.createElement('span');\n\n this.lastOffsetWidth = -1;\n\n dom.style(this.collapsible, style);\n dom.style(this.expandable, style);\n dom.style(this.expandableInner, style);\n dom.style(this.collapsibleInner, 'display:inline-block;width:200%;height:200%;');\n\n dom.append(this.collapsible, this.collapsibleInner);\n dom.append(this.expandable, this.expandableInner);\n\n dom.append(this.element, this.collapsible);\n dom.append(this.element, this.expandable);\n};\n\nmodule.exports = Ruler;\n\n/**\n * @return {Element}\n */\nRuler.prototype.getElement = function () {\n return this.element;\n};\n\n/**\n * @param {string} family\n * @param {string} description\n */\nRuler.prototype.setFont = function (family, description) {\n dom.style(this.element, 'min-width:20px;' +\n 'min-height:20px;' +\n 'display:inline-block;' +\n 'position:absolute;' +\n 'width:auto;' +\n 'margin:0;' +\n 'padding:0;' +\n 'top:-999px;' +\n 'left:-999px;' +\n 'white-space:nowrap;' +\n 'font-size:100px;' +\n 'font-family:' + family + ';' +\n description);\n};\n\n/**\n * @return {number}\n */\nRuler.prototype.getWidth = function () {\n return this.element.offsetWidth;\n};\n\n/**\n * @param {string} width\n */\nRuler.prototype.setWidth = function (width) {\n this.element.style.width = width + 'px';\n};\n\n/**\n * @private\n *\n * @return {boolean}\n */\nRuler.prototype.reset = function () {\n var offsetWidth = this.getWidth(),\n width = offsetWidth + 100;\n\n this.expandableInner.style.width = width + 'px';\n this.expandable.scrollLeft = width;\n this.collapsible.scrollLeft = this.collapsible.scrollWidth + 100;\n\n if (this.lastOffsetWidth !== offsetWidth) {\n this.lastOffsetWidth = offsetWidth;\n return true;\n } else {\n return false;\n }\n};\n\n/**\n * @private\n * @param {function(number)} callback\n */\nRuler.prototype.onScroll = function (callback) {\n if (this.reset() && this.element.parentNode !== null) {\n callback(this.lastOffsetWidth);\n }\n};\n\n/**\n * @param {function(number)} callback\n */\nRuler.prototype.onResize = function (callback) {\n var that = this;\n\n this.collapsible.addEventListener('scroll', function () {\n that.onScroll(callback);\n }, false);\n this.expandable.addEventListener('scroll', function () {\n that.onScroll(callback);\n }, false);\n this.reset();\n};\n","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'exclusiveMinimum': true,\n 'exclusiveMaximum': true,\n 'additionalItems': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n return v.id && ('<' + v.id + '>') || (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchema(instance, options, ctx, callback, schema){\n var res = this.validateSchema(instance, schema, options, ctx);\n if (! res.valid && callback instanceof Function) {\n callback(res);\n }\n return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(schema.anyOf)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(\n testSchema.bind(\n this, instance, options, ctx, function(res){inner.importErrors(res);}\n ))) {\n var list = schema.anyOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.allOf)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var msg = (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.oneOf)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(\n testSchema.bind(\n this, instance, options, ctx, function(res) {inner.importErrors(res);}\n ) ).length;\n var list = schema.oneOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(instance === undefined || !(instance instanceof Object)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var prop = (instance || undefined) && instance[property];\n var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\",\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(instance === undefined) return;\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var expr = new RegExp(pattern);\n if (!expr.test(property)) {\n continue;\n }\n test = false;\n var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(instance === undefined) return;\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!instance || typeof instance !== 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n })\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!instance || typeof instance !== 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n if (!Array.isArray(instance)) {\n return null;\n }\n var self = this;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined || !schema.items) {\n return result;\n }\n instance.every(function (value, i) {\n var items = Array.isArray(schema.items) ? (schema.items[i] || schema.additionalItems) : schema.items;\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = true;\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n valid = instance > schema.minimum;\n } else {\n valid = instance >= schema.minimum;\n }\n if (!valid) {\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must have a minimum value of \" + schema.minimum,\n });\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid;\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n valid = instance < schema.maximum;\n } else {\n valid = instance <= schema.maximum;\n }\n if (!valid) {\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must have a maximum value of \" + schema.maximum,\n });\n }\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * Of course, this is susceptible to floating point error since it compares the floating points\n * and not the JSON byte sequences to arbitrary precision.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n\n if (schema.divisibleBy == 0) {\n throw new SchemaError(\"divisibleBy cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance / schema.divisibleBy % 1) {\n result.addError({\n name: 'divisibleBy',\n argument: schema.divisibleBy,\n message: \"is not divisible by (multiple of) \" + JSON.stringify(schema.divisibleBy),\n });\n }\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * Of course, this is susceptible to floating point error since it compares the floating points\n * and not the JSON byte sequences to arbitrary precision.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n if (typeof instance !== 'number') {\n return null;\n }\n\n if (schema.multipleOf == 0) {\n throw new SchemaError(\"multipleOf cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance / schema.multipleOf % 1) {\n result.addError({\n name: 'multipleOf',\n argument: schema.multipleOf,\n message: \"is not a multiple of (divisible by) \" + JSON.stringify(schema.multipleOf),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n result.addError({\n name: 'required',\n message: \"is required\"\n });\n } else if (instance && typeof instance==='object' && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(instance[n]===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (typeof instance !== 'string') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.match(schema.pattern)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!(typeof instance === 'string')) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!Array.isArray(instance)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!Array.isArray(instance)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Validates that every item in an instance array is unique, when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(instance)) {\n return result;\n }\n function testArrays (v, i, a) {\n for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n return true;\n }\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (!Array.isArray(instance)) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!instance || typeof instance != 'object') {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (Array.isArray(dep)) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (!Array.isArray(schema['enum'])) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!Array.isArray(notTypes)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var schemaId = type && type.id && ('<' + type.id + '>') || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, propertyPath, name, argument) {\n if (propertyPath) {\n this.property = propertyPath;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n if (schema.id) {\n this.schema = schema.id;\n } else {\n this.schema = schema;\n }\n }\n if (instance) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n }\n\n if (this.throwError) {\n throw err;\n }\n this.errors.push(err);\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n Array.prototype.push.apply(this.errors, res.errors);\n }\n};\n\nfunction stringizer (v,i){\n return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n { constructor: {value: SchemaError, enumerable: false}\n , name: {value: 'SchemaError', enumerable: false}\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, propertyPath, base, schemas) {\n this.schema = schema;\n this.options = options;\n this.propertyPath = propertyPath;\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var propertyPath = (propertyName===undefined) ? this.propertyPath : this.propertyPath+makeSuffix(propertyName);\n var base = uri.resolve(this.base, schema.id||'');\n var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n if(schema.id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n}\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n 'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n 'style': /\\s*(.+?):\\s*([^;]+);?/g,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n } else if (validator && validator.customFormats &&\n typeof validator.customFormats[format] === 'function') {\n return validator.customFormats[format](input);\n }\n return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (a instanceof Array) {\n if (!(b instanceof Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e)\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e)\n }\n }\n}\n\nfunction copyist (src, dst, key) {\n dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key])\n }\n }\n}\n\nfunction deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(deepMerger.bind(null, target, dst));\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(copyist.bind(null, target, dst));\n }\n Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n }\n\n return dst;\n};\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\nfunction pathEncoder (v) {\n return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n\t// ~ must be encoded explicitly because hacks\n\t// the slash is encoded by encodeURIComponent\n\treturn a.map(pathEncoder).join('');\n};\n","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n","'use strict';\n\nvar urilib = require('url');\n\nvar attribute = require('./attribute');\nvar helpers = require('./helpers');\nvar ValidatorResult = helpers.ValidatorResult;\nvar SchemaError = helpers.SchemaError;\nvar SchemaContext = helpers.SchemaContext;\n\n/**\n * Creates a new Validator object\n * @name Validator\n * @constructor\n */\nvar Validator = function Validator () {\n // Allow a validator instance to override global custom formats or to have their\n // own custom formats.\n this.customFormats = Object.create(Validator.prototype.customFormats);\n this.schemas = {};\n this.unresolvedRefs = [];\n\n // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n this.types = Object.create(types);\n this.attributes = Object.create(attribute.validators);\n};\n\n// Allow formats to be registered globally.\nValidator.prototype.customFormats = {};\n\n// Hint at the presence of a property\nValidator.prototype.schemas = null;\nValidator.prototype.types = null;\nValidator.prototype.attributes = null;\nValidator.prototype.unresolvedRefs = null;\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param schema\n * @param urn\n * @return {Object}\n */\nValidator.prototype.addSchema = function addSchema (schema, uri) {\n if (!schema) {\n return null;\n }\n var ourUri = uri || schema.id;\n this.addSubSchema(ourUri, schema);\n if (ourUri) {\n this.schemas[ourUri] = schema;\n }\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchema = function addSubSchema(baseuri, schema) {\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n // Only mark unknown schemas as unresolved\n if (this.schemas[resolvedUri] === undefined) {\n this.schemas[resolvedUri] = null;\n this.unresolvedRefs.push(resolvedUri);\n }\n return;\n }\n var ourUri = schema.id && urilib.resolve(baseuri, schema.id);\n var ourBase = ourUri || baseuri;\n if (ourUri) {\n if(this.schemas[ourUri]){\n if(!helpers.deepCompareStrict(this.schemas[ourUri], schema)){\n throw new Error('Schema <'+schema+'> already exists with different definition');\n }\n return this.schemas[ourUri];\n }\n this.schemas[ourUri] = schema;\n var documentUri = ourUri.replace(/^([^#]*)#$/, '$1');\n this.schemas[documentUri] = schema;\n }\n this.addSubSchemaArray(ourBase, ((schema.items instanceof Array)?schema.items:[schema.items]));\n this.addSubSchemaArray(ourBase, ((schema.extends instanceof Array)?schema.extends:[schema.extends]));\n this.addSubSchema(ourBase, schema.additionalItems);\n this.addSubSchemaObject(ourBase, schema.properties);\n this.addSubSchema(ourBase, schema.additionalProperties);\n this.addSubSchemaObject(ourBase, schema.definitions);\n this.addSubSchemaObject(ourBase, schema.patternProperties);\n this.addSubSchemaObject(ourBase, schema.dependencies);\n this.addSubSchemaArray(ourBase, schema.disallow);\n this.addSubSchemaArray(ourBase, schema.allOf);\n this.addSubSchemaArray(ourBase, schema.anyOf);\n this.addSubSchemaArray(ourBase, schema.oneOf);\n this.addSubSchema(ourBase, schema.not);\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n if(!(schemas instanceof Array)) return;\n for(var i=0; i\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n return instance instanceof Array;\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance) === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/** Used as references for the maximum length and index of an array. */\nvar MAX_ARRAY_LENGTH = 4294967295;\n\n/**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\nfunction LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n}\n\n// Ensure `LazyWrapper` is an instance of `baseLodash`.\nLazyWrapper.prototype = baseCreate(baseLodash.prototype);\nLazyWrapper.prototype.constructor = LazyWrapper;\n\nmodule.exports = LazyWrapper;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var baseCreate = require('./_baseCreate'),\n baseLodash = require('./_baseLodash');\n\n/**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\nfunction LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n}\n\nLodashWrapper.prototype = baseCreate(baseLodash.prototype);\nLodashWrapper.prototype.constructor = LodashWrapper;\n\nmodule.exports = LodashWrapper;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\nmodule.exports = addMapEntry;\n","/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\nmodule.exports = addSetEntry;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isObject = require('./isObject'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\nfunction baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n}\n\nmodule.exports = baseInRange;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\nfunction baseLodash() {\n // No operation performed.\n}\n\nmodule.exports = baseLodash;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var identity = require('./identity'),\n metaMap = require('./_metaMap');\n\n/**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n};\n\nmodule.exports = baseSetData;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseUniq = require('./_baseUniq');\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n}\n\nmodule.exports = baseXor;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var addMapEntry = require('./_addMapEntry'),\n arrayReduce = require('./_arrayReduce'),\n mapToArray = require('./_mapToArray');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\nmodule.exports = cloneMap;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var addSetEntry = require('./_addSetEntry'),\n arrayReduce = require('./_arrayReduce'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\nmodule.exports = cloneSet;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n}\n\nmodule.exports = composeArgs;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\nfunction composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n}\n\nmodule.exports = composeArgsRight;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\nfunction countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n}\n\nmodule.exports = countHolders;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n}\n\nmodule.exports = createBind;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var baseCreate = require('./_baseCreate'),\n isObject = require('./isObject');\n\n/**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n}\n\nmodule.exports = createCtor;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n createHybrid = require('./_createHybrid'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createCurry;\n","var LodashWrapper = require('./_LodashWrapper'),\n flatRest = require('./_flatRest'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n isArray = require('./isArray'),\n isLaziable = require('./_isLaziable');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\nfunction createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n}\n\nmodule.exports = createFlow;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n countHolders = require('./_countHolders'),\n createCtor = require('./_createCtor'),\n createRecurry = require('./_createRecurry'),\n getHolder = require('./_getHolder'),\n reorder = require('./_reorder'),\n replaceHolders = require('./_replaceHolders'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_ARY_FLAG = 128,\n WRAP_FLIP_FLAG = 512;\n\n/**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n}\n\nmodule.exports = createHybrid;\n","var apply = require('./_apply'),\n createCtor = require('./_createCtor'),\n root = require('./_root');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1;\n\n/**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n}\n\nmodule.exports = createPartial;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var isLaziable = require('./_isLaziable'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n}\n\nmodule.exports = createRecurry;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var baseSetData = require('./_baseSetData'),\n createBind = require('./_createBind'),\n createCurry = require('./_createCurry'),\n createHybrid = require('./_createHybrid'),\n createPartial = require('./_createPartial'),\n getData = require('./_getData'),\n mergeData = require('./_mergeData'),\n setData = require('./_setData'),\n setWrapToString = require('./_setWrapToString'),\n toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\nfunction createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n}\n\nmodule.exports = createWrap;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var metaMap = require('./_metaMap'),\n noop = require('./noop');\n\n/**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\nvar getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n};\n\nmodule.exports = getData;\n","var realNames = require('./_realNames');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\nfunction getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n}\n\nmodule.exports = getFuncName;\n","/**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\nfunction getHolder(func) {\n var object = func;\n return object.placeholder;\n}\n\nmodule.exports = getHolder;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used to match wrap detail comments. */\nvar reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n/**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\nfunction getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n}\n\nmodule.exports = getWrapDetails;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneMap = require('./_cloneMap'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSet = require('./_cloneSet'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","/** Used to match wrap detail comments. */\nvar reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n\n/**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\nfunction insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n}\n\nmodule.exports = insertWrapDetails;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var LazyWrapper = require('./_LazyWrapper'),\n getData = require('./_getData'),\n getFuncName = require('./_getFuncName'),\n lodash = require('./wrapperLodash');\n\n/**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\nfunction isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n}\n\nmodule.exports = isLaziable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var composeArgs = require('./_composeArgs'),\n composeArgsRight = require('./_composeArgsRight'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\nfunction mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n}\n\nmodule.exports = mergeData;\n","var WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\n","var copyArray = require('./_copyArray'),\n isIndex = require('./_isIndex');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\nfunction reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n}\n\nmodule.exports = reorder;\n","/** Used as the internal argument placeholder. */\nvar PLACEHOLDER = '__lodash_placeholder__';\n\n/**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\nfunction replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n}\n\nmodule.exports = replaceHolders;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var baseSetData = require('./_baseSetData'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\nvar setData = shortOut(baseSetData);\n\nmodule.exports = setData;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var getWrapDetails = require('./_getWrapDetails'),\n insertWrapDetails = require('./_insertWrapDetails'),\n setToString = require('./_setToString'),\n updateWrapDetails = require('./_updateWrapDetails');\n\n/**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\nfunction setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n}\n\nmodule.exports = setWrapToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var arrayEach = require('./_arrayEach'),\n arrayIncludes = require('./_arrayIncludes');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n/** Used to associate wrap methods with their bit flags. */\nvar wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n];\n\n/**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\nfunction updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n}\n\nmodule.exports = updateWrapDetails;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n copyArray = require('./_copyArray');\n\n/**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\nfunction wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n}\n\nmodule.exports = wrapperClone;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nmodule.exports = difference;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nmodule.exports = findLastIndex;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var createFlow = require('./_createFlow');\n\n/**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\nvar flow = createFlow();\n\nmodule.exports = flow;\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var setPlaceholder,\n isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n placeholder = isLib ? func : fallbackHolder,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isFunction': util.isFunction,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isFunction = helpers.isFunction,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null) {\n nested[path[index]] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n if (mapping.placeholder[realName]) {\n setPlaceholder = true;\n result.placeholder = func.placeholder = placeholder;\n }\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n if (setPlaceholder) {\n _.placeholder = placeholder;\n }\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","module.exports = {\n 'cap': false,\n 'curry': false,\n 'fixed': false,\n 'immutable': false,\n 'rearg': false\n};\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to track methods with placeholder support */\nexports.placeholder = {\n 'bind': true,\n 'bindKey': true,\n 'curry': true,\n 'curryRight': true,\n 'partial': true,\n 'partialRight': true\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","module.exports = {\n 'ary': require('../ary'),\n 'assign': require('../_baseAssign'),\n 'clone': require('../clone'),\n 'curry': require('../curry'),\n 'forEach': require('../_arrayEach'),\n 'isArray': require('../isArray'),\n 'isFunction': require('../isFunction'),\n 'iteratee': require('../iteratee'),\n 'keys': require('../_baseKeys'),\n 'rearg': require('../rearg'),\n 'toInteger': require('../toInteger'),\n 'toPath': require('../toPath')\n};\n","var convert = require('./convert'),\n func = convert('capitalize', require('../capitalize'), require('./_falseOptions'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('chunk', require('../chunk'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var baseConvert = require('./_baseConvert'),\n util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","var convert = require('./convert'),\n func = convert('debounce', require('../debounce'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('escapeRegExp', require('../escapeRegExp'), require('./_falseOptions'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('filter', require('../filter'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('findIndex', require('../findIndex'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('findLastIndex', require('../findLastIndex'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('flow', require('../flow'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('isEmpty', require('../isEmpty'), require('./_falseOptions'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('isEqual', require('../isEqual'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('omit', require('../omit'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('pick', require('../pick'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('pickBy', require('../pickBy'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var convert = require('./convert'),\n func = convert('range', require('../range'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('reduce', require('../reduce'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('throttle', require('../throttle'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('upperFirst', require('../upperFirst'), require('./_falseOptions'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('without', require('../without'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var convert = require('./convert'),\n func = convert('xor', require('../xor'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseInRange = require('./_baseInRange'),\n toFinite = require('./toFinite'),\n toNumber = require('./toNumber');\n\n/**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\nfunction inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n}\n\nmodule.exports = inRange;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseClone = require('./_baseClone'),\n baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var createWrap = require('./_createWrap'),\n flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var baseDifference = require('./_baseDifference'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n});\n\nmodule.exports = without;\n","var LazyWrapper = require('./_LazyWrapper'),\n LodashWrapper = require('./_LodashWrapper'),\n baseLodash = require('./_baseLodash'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike'),\n wrapperClone = require('./_wrapperClone');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\nfunction lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n}\n\n// Ensure wrappers are instances of `baseLodash`.\nlodash.prototype = baseLodash.prototype;\nlodash.prototype.constructor = lodash;\n\nmodule.exports = lodash;\n","var arrayFilter = require('./_arrayFilter'),\n baseRest = require('./_baseRest'),\n baseXor = require('./_baseXor'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\nvar xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n});\n\nmodule.exports = xor;\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('preact'), require('redux')) :\n\ttypeof define === 'function' && define.amd ? define(['preact', 'redux'], factory) :\n\t(global.preactRedux = factory(global.preact,global.Redux));\n}(this, (function (preact,redux) {\n\nvar Children = {\n\tonly: function only(children) {\n\t\treturn children && children[0] || null;\n\t}\n};\n\nfunction proptype() {}\nproptype.isRequired = proptype;\n\nvar PropTypes = {\n\telement: proptype,\n\tfunc: proptype,\n\tshape: function shape() {\n\t\treturn proptype;\n\t},\n\tinstanceOf: function instanceOf() {\n\t\treturn proptype;\n\t}\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\nvar set = function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if (\"value\" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n};\n\n// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription = function () {\n function Subscription(store, parentSub) {\n classCallCheck(this, Subscription);\n\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n Subscription.prototype.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n Subscription.prototype.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n Subscription.prototype.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n Subscription.prototype.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n // this.onStateChange is set by connectAdvanced.initSubscription()\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n\n this.listeners = createListenerCollection();\n }\n };\n\n Subscription.prototype.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nvar storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n}\n\nvar didWarnAboutReceivingStore = false;\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n didWarnAboutReceivingStore = true;\n\n warning(' does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reactjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nvar Provider = function (_Component) {\n inherits(Provider, _Component);\n\n Provider.prototype.getChildContext = function getChildContext() {\n return { store: this.store, storeSubscription: null };\n };\n\n function Provider(props, context) {\n classCallCheck(this, Provider);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props, context));\n\n _this.store = props.store;\n return _this;\n }\n\n Provider.prototype.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n}(preact.Component);\n\n{\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n var store = this.store;\n var nextStore = nextProps.store;\n\n\n if (store !== nextStore) {\n warnAboutReceivingStore();\n }\n };\n}\n\nProvider.childContextTypes = {\n store: storeShape.isRequired,\n storeSubscription: PropTypes.instanceOf(Subscription)\n};\nProvider.displayName = 'Provider';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n arguments: true,\n arity: true\n};\n\nvar isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';\n\nvar index = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n var keys = Object.getOwnPropertyNames(sourceComponent);\n\n /* istanbul ignore else */\n if (isGetOwnPropertySymbolsAvailable) {\n keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {\n try {\n targetComponent[keys[i]] = sourceComponent[keys[i]];\n } catch (error) {}\n }\n }\n }\n\n return targetComponent;\n};\n\nvar invariant = function () {}\n\nvar hotReloadingVersion = 0;\nfunction connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory) {\n var _contextTypes, _childContextTypes;\n\n var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var _ref$getDisplayName = _ref.getDisplayName;\n var getDisplayName = _ref$getDisplayName === undefined ? function (name) {\n return 'ConnectAdvanced(' + name + ')';\n } : _ref$getDisplayName;\n var _ref$methodName = _ref.methodName;\n var methodName = _ref$methodName === undefined ? 'connectAdvanced' : _ref$methodName;\n var _ref$renderCountProp = _ref.renderCountProp;\n var renderCountProp = _ref$renderCountProp === undefined ? undefined : _ref$renderCountProp;\n var _ref$shouldHandleStat = _ref.shouldHandleStateChanges;\n var shouldHandleStateChanges = _ref$shouldHandleStat === undefined ? true : _ref$shouldHandleStat;\n var _ref$storeKey = _ref.storeKey;\n var storeKey = _ref$storeKey === undefined ? 'store' : _ref$storeKey;\n var _ref$withRef = _ref.withRef;\n var withRef = _ref$withRef === undefined ? false : _ref$withRef;\n var connectOptions = objectWithoutProperties(_ref, ['getDisplayName', 'methodName', 'renderCountProp', 'shouldHandleStateChanges', 'storeKey', 'withRef']);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = PropTypes.instanceOf(Subscription), _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = PropTypes.instanceOf(Subscription), _childContextTypes);\n\n return function wrapWithConnect(WrappedComponent) {\n invariant(typeof WrappedComponent == 'function', 'You must pass a component to the function returned by ' + ('connect. Instead received ' + WrappedComponent));\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var Connect = function (_Component) {\n inherits(Connect, _Component);\n\n function Connect(props, context) {\n classCallCheck(this, Connect);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, props, context));\n\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = _this.props[storeKey] || _this.context[storeKey];\n _this.parentSub = props[subscriptionKey] || context[subscriptionKey];\n\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n invariant(_this.store, 'Could not find \"' + storeKey + '\" in either the context or ' + ('props of \"' + displayName + '\". ') + 'Either wrap the root component in a , ' + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n // make sure `getState` is properly bound in order to avoid breaking\n // custom store implementations that rely on the store's context\n _this.getState = _this.store.getState.bind(_this.store);\n\n _this.initSelector();\n _this.initSubscription();\n return _this;\n }\n\n Connect.prototype.getChildContext = function getChildContext() {\n var _ref2;\n\n return _ref2 = {}, _ref2[subscriptionKey] = this.subscription || this.parentSub, _ref2;\n };\n\n Connect.prototype.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return;\n\n // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n };\n\n Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n Connect.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n // these are just to guard against extra memory leakage if a parent element doesn't\n // dereference this instance properly, such as an async callback that never finishes\n this.subscription = null;\n this.store = null;\n this.parentSub = null;\n this.selector.run = function () {};\n };\n\n Connect.prototype.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, 'To access the wrapped instance, you need to specify ' + ('{ withRef: true } in the options argument of the ' + methodName + '() call.'));\n return this.wrappedInstance;\n };\n\n Connect.prototype.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n Connect.prototype.initSelector = function initSelector() {\n var dispatch = this.store.dispatch;\n var getState = this.getState;\n\n var sourceSelector = selectorFactory(dispatch, selectorFactoryOptions);\n\n // wrap the selector in an object that tracks its results between runs\n var selector = this.selector = {\n shouldComponentUpdate: true,\n props: sourceSelector(getState(), this.props),\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(getState(), props);\n if (selector.error || nextProps !== selector.props) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n };\n\n Connect.prototype.initSubscription = function initSubscription() {\n var _this2 = this;\n\n if (shouldHandleStateChanges) {\n (function () {\n var subscription = _this2.subscription = new Subscription(_this2.store, _this2.parentSub);\n var dummyState = {};\n\n subscription.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n subscription.notifyNestedSubs();\n } else {\n this.componentDidUpdate = function componentDidUpdate() {\n this.componentDidUpdate = undefined;\n subscription.notifyNestedSubs();\n };\n\n this.setState(dummyState);\n }\n }.bind(_this2);\n })();\n }\n };\n\n Connect.prototype.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n Connect.prototype.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp) return props;\n // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n var withExtras = _extends({}, props);\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n return withExtras;\n };\n\n Connect.prototype.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return preact.h(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(preact.Component);\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n\n\n {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector();\n\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.initSubscription();\n if (shouldHandleStateChanges) this.subscription.trySubscribe();\n }\n };\n }\n\n return index(Connect, WrappedComponent);\n };\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n\n var countA = 0;\n var countB = 0;\n\n for (var key in a) {\n if (hasOwn.call(a, key) && a[key] !== b[key]) return false;\n countA++;\n }\n\n for (var _key in b) {\n if (hasOwn.call(b, _key)) countB++;\n }\n\n return countA === countB;\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetPrototype = Object.getPrototypeOf;\n\n/**\n * Gets the `[[Prototype]]` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {null|Object} Returns the `[[Prototype]]`.\n */\nfunction getPrototype(value) {\n return nativeGetPrototype(Object(value));\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) == 'object';\n}\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object,\n * else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\n\nfunction verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + '() in ' + displayName + ' must return a plain object. Instead received ' + value + '.');\n }\n}\n\nfunction wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n}\n\n// dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n}\n\n// Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n };\n\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n verifyPlainObject(props, displayName, methodName);\n\n return props;\n };\n\n return proxy;\n };\n}\n\nfunction whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\n\nfunction whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return { dispatch: dispatch };\n }) : undefined;\n}\n\nfunction whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && (typeof mapDispatchToProps === 'undefined' ? 'undefined' : _typeof(mapDispatchToProps)) === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return redux.bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\n\nvar defaultMapDispatchToPropsFactories = [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];\n\nfunction whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\n\nfunction whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\n\nvar defaultMapStateToPropsFactories = [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];\n\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\n\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName;\n var pure = _ref.pure;\n var areMergedPropsEqual = _ref.areMergedPropsEqual;\n\n var hasRunOnce = false;\n var mergedProps = void 0;\n\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n\n verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\n\nfunction whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\n\nfunction whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\n\nvar defaultMergePropsFactories = [whenMergePropsIsFunction, whenMergePropsIsOmitted];\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error('Unexpected value for ' + methodName + ' in ' + displayName + '.');\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!selector.hasOwnProperty('dependsOnOwnProps')) {\n warning('The selector for ' + methodName + ' of ' + displayName + ' did not specify a value for dependsOnOwnProps.');\n }\n }\n}\n\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}\n\nfunction impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\n\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual;\n var areOwnPropsEqual = _ref.areOwnPropsEqual;\n var areStatePropsEqual = _ref.areStatePropsEqual;\n\n var hasRunAtLeastOnce = false;\n var state = void 0;\n var ownProps = void 0;\n var stateProps = void 0;\n var dispatchProps = void 0;\n var mergedProps = void 0;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\n\n// TODO: Add more comments\n\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nfunction finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps;\n var initMapDispatchToProps = _ref2.initMapDispatchToProps;\n var initMergeProps = _ref2.initMergeProps;\n var options = objectWithoutProperties(_ref2, ['initMapStateToProps', 'initMapDispatchToProps', 'initMergeProps']);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error('Invalid value of type ' + (typeof arg === 'undefined' ? 'undefined' : _typeof(arg)) + ' for ' + name + ' argument when connecting component ' + options.wrappedComponentName + '.');\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n\n// createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\nfunction createConnect() {\n var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var _ref$connectHOC = _ref.connectHOC;\n var connectHOC = _ref$connectHOC === undefined ? connectAdvanced : _ref$connectHOC;\n var _ref$mapStateToPropsF = _ref.mapStateToPropsFactories;\n var mapStateToPropsFactories = _ref$mapStateToPropsF === undefined ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF;\n var _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories;\n var mapDispatchToPropsFactories = _ref$mapDispatchToPro === undefined ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro;\n var _ref$mergePropsFactor = _ref.mergePropsFactories;\n var mergePropsFactories = _ref$mergePropsFactor === undefined ? defaultMergePropsFactories : _ref$mergePropsFactor;\n var _ref$selectorFactory = _ref.selectorFactory;\n var selectorFactory = _ref$selectorFactory === undefined ? finalPropsSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps) {\n var _ref2 = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];\n\n var _ref2$pure = _ref2.pure;\n var pure = _ref2$pure === undefined ? true : _ref2$pure;\n var _ref2$areStatesEqual = _ref2.areStatesEqual;\n var areStatesEqual = _ref2$areStatesEqual === undefined ? strictEqual : _ref2$areStatesEqual;\n var _ref2$areOwnPropsEqua = _ref2.areOwnPropsEqual;\n var areOwnPropsEqual = _ref2$areOwnPropsEqua === undefined ? shallowEqual : _ref2$areOwnPropsEqua;\n var _ref2$areStatePropsEq = _ref2.areStatePropsEqual;\n var areStatePropsEqual = _ref2$areStatePropsEq === undefined ? shallowEqual : _ref2$areStatePropsEq;\n var _ref2$areMergedPropsE = _ref2.areMergedPropsEqual;\n var areMergedPropsEqual = _ref2$areMergedPropsE === undefined ? shallowEqual : _ref2$areMergedPropsE;\n var extraOptions = objectWithoutProperties(_ref2, ['pure', 'areStatesEqual', 'areOwnPropsEqual', 'areStatePropsEqual', 'areMergedPropsEqual']);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return 'Connect(' + name + ')';\n },\n\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n\n }, extraOptions));\n };\n}\n\nvar connect$1 = createConnect();\n\n\n\nvar lib$1 = {\n\tProvider: Provider,\n\tconnect: connect$1,\n\tconnectAdvanced: connectAdvanced\n};\n\nreturn lib$1;\n\n})));\n//# sourceMappingURL=preact-redux.js.map\n","!function() {\n 'use strict';\n function VNode() {}\n function h(nodeName, attributes) {\n var lastSimple, child, simple, i, children = EMPTY_CHILDREN;\n for (i = arguments.length; i-- > 2; ) stack.push(arguments[i]);\n if (attributes && null != attributes.children) {\n if (!stack.length) stack.push(attributes.children);\n delete attributes.children;\n }\n while (stack.length) if ((child = stack.pop()) && void 0 !== child.pop) for (i = child.length; i--; ) stack.push(child[i]); else {\n if (child === !0 || child === !1) child = null;\n if (simple = 'function' != typeof nodeName) if (null == child) child = ''; else if ('number' == typeof child) child = String(child); else if ('string' != typeof child) simple = !1;\n if (simple && lastSimple) children[children.length - 1] += child; else if (children === EMPTY_CHILDREN) children = [ child ]; else children.push(child);\n lastSimple = simple;\n }\n var p = new VNode();\n p.nodeName = nodeName;\n p.children = children;\n p.attributes = null == attributes ? void 0 : attributes;\n p.key = null == attributes ? void 0 : attributes.key;\n if (void 0 !== options.vnode) options.vnode(p);\n return p;\n }\n function extend(obj, props) {\n for (var i in props) obj[i] = props[i];\n return obj;\n }\n function cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n }\n function enqueueRender(component) {\n if (!component.__d && (component.__d = !0) && 1 == items.push(component)) (options.debounceRendering || setTimeout)(rerender);\n }\n function rerender() {\n var p, list = items;\n items = [];\n while (p = list.pop()) if (p.__d) renderComponent(p);\n }\n function isSameNodeType(node, vnode, hydrating) {\n if ('string' == typeof vnode || 'number' == typeof vnode) return void 0 !== node.splitText;\n if ('string' == typeof vnode.nodeName) return !node._componentConstructor && isNamedNode(node, vnode.nodeName); else return hydrating || node._componentConstructor === vnode.nodeName;\n }\n function isNamedNode(node, nodeName) {\n return node.__n === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n }\n function getNodeProps(vnode) {\n var props = extend({}, vnode.attributes);\n props.children = vnode.children;\n var defaultProps = vnode.nodeName.defaultProps;\n if (void 0 !== defaultProps) for (var i in defaultProps) if (void 0 === props[i]) props[i] = defaultProps[i];\n return props;\n }\n function createNode(nodeName, isSvg) {\n var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n node.__n = nodeName;\n return node;\n }\n function removeNode(node) {\n if (node.parentNode) node.parentNode.removeChild(node);\n }\n function setAccessor(node, name, old, value, isSvg) {\n if ('className' === name) name = 'class';\n if ('key' === name) ; else if ('ref' === name) {\n if (old) old(null);\n if (value) value(node);\n } else if ('class' === name && !isSvg) node.className = value || ''; else if ('style' === name) {\n if (!value || 'string' == typeof value || 'string' == typeof old) node.style.cssText = value || '';\n if (value && 'object' == typeof value) {\n if ('string' != typeof old) for (var i in old) if (!(i in value)) node.style[i] = '';\n for (var i in value) node.style[i] = 'number' == typeof value[i] && IS_NON_DIMENSIONAL.test(i) === !1 ? value[i] + 'px' : value[i];\n }\n } else if ('dangerouslySetInnerHTML' === name) {\n if (value) node.innerHTML = value.__html || '';\n } else if ('o' == name[0] && 'n' == name[1]) {\n var useCapture = name !== (name = name.replace(/Capture$/, ''));\n name = name.toLowerCase().substring(2);\n if (value) {\n if (!old) node.addEventListener(name, eventProxy, useCapture);\n } else node.removeEventListener(name, eventProxy, useCapture);\n (node.__l || (node.__l = {}))[name] = value;\n } else if ('list' !== name && 'type' !== name && !isSvg && name in node) {\n setProperty(node, name, null == value ? '' : value);\n if (null == value || value === !1) node.removeAttribute(name);\n } else {\n var ns = isSvg && name !== (name = name.replace(/^xlink\\:?/, ''));\n if (null == value || value === !1) if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase()); else node.removeAttribute(name); else if ('function' != typeof value) if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value); else node.setAttribute(name, value);\n }\n }\n function setProperty(node, name, value) {\n try {\n node[name] = value;\n } catch (e) {}\n }\n function eventProxy(e) {\n return this.__l[e.type](options.event && options.event(e) || e);\n }\n function flushMounts() {\n var c;\n while (c = mounts.pop()) {\n if (options.afterMount) options.afterMount(c);\n if (c.componentDidMount) c.componentDidMount();\n }\n }\n function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n if (!diffLevel++) {\n isSvgMode = null != parent && void 0 !== parent.ownerSVGElement;\n hydrating = null != dom && !('__preactattr_' in dom);\n }\n var ret = idiff(dom, vnode, context, mountAll, componentRoot);\n if (parent && ret.parentNode !== parent) parent.appendChild(ret);\n if (!--diffLevel) {\n hydrating = !1;\n if (!componentRoot) flushMounts();\n }\n return ret;\n }\n function idiff(dom, vnode, context, mountAll, componentRoot) {\n var out = dom, prevSvgMode = isSvgMode;\n if (null == vnode) vnode = '';\n if ('string' == typeof vnode) {\n if (dom && void 0 !== dom.splitText && dom.parentNode && (!dom._component || componentRoot)) {\n if (dom.nodeValue != vnode) dom.nodeValue = vnode;\n } else {\n out = document.createTextNode(vnode);\n if (dom) {\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, !0);\n }\n }\n out.__preactattr_ = !0;\n return out;\n }\n if ('function' == typeof vnode.nodeName) return buildComponentFromVNode(dom, vnode, context, mountAll);\n isSvgMode = 'svg' === vnode.nodeName ? !0 : 'foreignObject' === vnode.nodeName ? !1 : isSvgMode;\n if (!dom || !isNamedNode(dom, String(vnode.nodeName))) {\n out = createNode(String(vnode.nodeName), isSvgMode);\n if (dom) {\n while (dom.firstChild) out.appendChild(dom.firstChild);\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, !0);\n }\n }\n var fc = out.firstChild, props = out.__preactattr_ || (out.__preactattr_ = {}), vchildren = vnode.children;\n if (!hydrating && vchildren && 1 === vchildren.length && 'string' == typeof vchildren[0] && null != fc && void 0 !== fc.splitText && null == fc.nextSibling) {\n if (fc.nodeValue != vchildren[0]) fc.nodeValue = vchildren[0];\n } else if (vchildren && vchildren.length || null != fc) innerDiffNode(out, vchildren, context, mountAll, hydrating || null != props.dangerouslySetInnerHTML);\n diffAttributes(out, vnode.attributes, props);\n isSvgMode = prevSvgMode;\n return out;\n }\n function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n var j, c, vchild, child, originalChildren = dom.childNodes, children = [], keyed = {}, keyedLen = 0, min = 0, len = originalChildren.length, childrenLen = 0, vlen = vchildren ? vchildren.length : 0;\n if (0 !== len) for (var i = 0; i < len; i++) {\n var _child = originalChildren[i], props = _child.__preactattr_, key = vlen && props ? _child._component ? _child._component.__k : props.key : null;\n if (null != key) {\n keyedLen++;\n keyed[key] = _child;\n } else if (props || (void 0 !== _child.splitText ? isHydrating ? _child.nodeValue.trim() : !0 : isHydrating)) children[childrenLen++] = _child;\n }\n if (0 !== vlen) for (var i = 0; i < vlen; i++) {\n vchild = vchildren[i];\n child = null;\n var key = vchild.key;\n if (null != key) {\n if (keyedLen && void 0 !== keyed[key]) {\n child = keyed[key];\n keyed[key] = void 0;\n keyedLen--;\n }\n } else if (!child && min < childrenLen) for (j = min; j < childrenLen; j++) if (void 0 !== children[j] && isSameNodeType(c = children[j], vchild, isHydrating)) {\n child = c;\n children[j] = void 0;\n if (j === childrenLen - 1) childrenLen--;\n if (j === min) min++;\n break;\n }\n child = idiff(child, vchild, context, mountAll);\n if (child && child !== dom) if (i >= len) dom.appendChild(child); else if (child !== originalChildren[i]) if (child === originalChildren[i + 1]) removeNode(originalChildren[i]); else dom.insertBefore(child, originalChildren[i] || null);\n }\n if (keyedLen) for (var i in keyed) if (void 0 !== keyed[i]) recollectNodeTree(keyed[i], !1);\n while (min <= childrenLen) if (void 0 !== (child = children[childrenLen--])) recollectNodeTree(child, !1);\n }\n function recollectNodeTree(node, unmountOnly) {\n var component = node._component;\n if (component) unmountComponent(component); else {\n if (null != node.__preactattr_ && node.__preactattr_.ref) node.__preactattr_.ref(null);\n if (unmountOnly === !1 || null == node.__preactattr_) removeNode(node);\n removeChildren(node);\n }\n }\n function removeChildren(node) {\n node = node.lastChild;\n while (node) {\n var next = node.previousSibling;\n recollectNodeTree(node, !0);\n node = next;\n }\n }\n function diffAttributes(dom, attrs, old) {\n var name;\n for (name in old) if ((!attrs || null == attrs[name]) && null != old[name]) setAccessor(dom, name, old[name], old[name] = void 0, isSvgMode);\n for (name in attrs) if (!('children' === name || 'innerHTML' === name || name in old && attrs[name] === ('value' === name || 'checked' === name ? dom[name] : old[name]))) setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n }\n function collectComponent(component) {\n var name = component.constructor.name;\n (components[name] || (components[name] = [])).push(component);\n }\n function createComponent(Ctor, props, context) {\n var inst, list = components[Ctor.name];\n if (Ctor.prototype && Ctor.prototype.render) {\n inst = new Ctor(props, context);\n Component.call(inst, props, context);\n } else {\n inst = new Component(props, context);\n inst.constructor = Ctor;\n inst.render = doRender;\n }\n if (list) for (var i = list.length; i--; ) if (list[i].constructor === Ctor) {\n inst.__b = list[i].__b;\n list.splice(i, 1);\n break;\n }\n return inst;\n }\n function doRender(props, state, context) {\n return this.constructor(props, context);\n }\n function setComponentProps(component, props, opts, context, mountAll) {\n if (!component.__x) {\n component.__x = !0;\n if (component.__r = props.ref) delete props.ref;\n if (component.__k = props.key) delete props.key;\n if (!component.base || mountAll) {\n if (component.componentWillMount) component.componentWillMount();\n } else if (component.componentWillReceiveProps) component.componentWillReceiveProps(props, context);\n if (context && context !== component.context) {\n if (!component.__c) component.__c = component.context;\n component.context = context;\n }\n if (!component.__p) component.__p = component.props;\n component.props = props;\n component.__x = !1;\n if (0 !== opts) if (1 === opts || options.syncComponentUpdates !== !1 || !component.base) renderComponent(component, 1, mountAll); else enqueueRender(component);\n if (component.__r) component.__r(component);\n }\n }\n function renderComponent(component, opts, mountAll, isChild) {\n if (!component.__x) {\n var rendered, inst, cbase, props = component.props, state = component.state, context = component.context, previousProps = component.__p || props, previousState = component.__s || state, previousContext = component.__c || context, isUpdate = component.base, nextBase = component.__b, initialBase = isUpdate || nextBase, initialChildComponent = component._component, skip = !1;\n if (isUpdate) {\n component.props = previousProps;\n component.state = previousState;\n component.context = previousContext;\n if (2 !== opts && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === !1) skip = !0; else if (component.componentWillUpdate) component.componentWillUpdate(props, state, context);\n component.props = props;\n component.state = state;\n component.context = context;\n }\n component.__p = component.__s = component.__c = component.__b = null;\n component.__d = !1;\n if (!skip) {\n rendered = component.render(props, state, context);\n if (component.getChildContext) context = extend(extend({}, context), component.getChildContext());\n var toUnmount, base, childComponent = rendered && rendered.nodeName;\n if ('function' == typeof childComponent) {\n var childProps = getNodeProps(rendered);\n inst = initialChildComponent;\n if (inst && inst.constructor === childComponent && childProps.key == inst.__k) setComponentProps(inst, childProps, 1, context, !1); else {\n toUnmount = inst;\n component._component = inst = createComponent(childComponent, childProps, context);\n inst.__b = inst.__b || nextBase;\n inst.__u = component;\n setComponentProps(inst, childProps, 0, context, !1);\n renderComponent(inst, 1, mountAll, !0);\n }\n base = inst.base;\n } else {\n cbase = initialBase;\n toUnmount = initialChildComponent;\n if (toUnmount) cbase = component._component = null;\n if (initialBase || 1 === opts) {\n if (cbase) cbase._component = null;\n base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, !0);\n }\n }\n if (initialBase && base !== initialBase && inst !== initialChildComponent) {\n var baseParent = initialBase.parentNode;\n if (baseParent && base !== baseParent) {\n baseParent.replaceChild(base, initialBase);\n if (!toUnmount) {\n initialBase._component = null;\n recollectNodeTree(initialBase, !1);\n }\n }\n }\n if (toUnmount) unmountComponent(toUnmount);\n component.base = base;\n if (base && !isChild) {\n var componentRef = component, t = component;\n while (t = t.__u) (componentRef = t).base = base;\n base._component = componentRef;\n base._componentConstructor = componentRef.constructor;\n }\n }\n if (!isUpdate || mountAll) mounts.unshift(component); else if (!skip) {\n flushMounts();\n if (component.componentDidUpdate) component.componentDidUpdate(previousProps, previousState, previousContext);\n if (options.afterUpdate) options.afterUpdate(component);\n }\n if (null != component.__h) while (component.__h.length) component.__h.pop().call(component);\n if (!diffLevel && !isChild) flushMounts();\n }\n }\n function buildComponentFromVNode(dom, vnode, context, mountAll) {\n var c = dom && dom._component, originalComponent = c, oldDom = dom, isDirectOwner = c && dom._componentConstructor === vnode.nodeName, isOwner = isDirectOwner, props = getNodeProps(vnode);\n while (c && !isOwner && (c = c.__u)) isOwner = c.constructor === vnode.nodeName;\n if (c && isOwner && (!mountAll || c._component)) {\n setComponentProps(c, props, 3, context, mountAll);\n dom = c.base;\n } else {\n if (originalComponent && !isDirectOwner) {\n unmountComponent(originalComponent);\n dom = oldDom = null;\n }\n c = createComponent(vnode.nodeName, props, context);\n if (dom && !c.__b) {\n c.__b = dom;\n oldDom = null;\n }\n setComponentProps(c, props, 1, context, mountAll);\n dom = c.base;\n if (oldDom && dom !== oldDom) {\n oldDom._component = null;\n recollectNodeTree(oldDom, !1);\n }\n }\n return dom;\n }\n function unmountComponent(component) {\n if (options.beforeUnmount) options.beforeUnmount(component);\n var base = component.base;\n component.__x = !0;\n if (component.componentWillUnmount) component.componentWillUnmount();\n component.base = null;\n var inner = component._component;\n if (inner) unmountComponent(inner); else if (base) {\n if (base.__preactattr_ && base.__preactattr_.ref) base.__preactattr_.ref(null);\n component.__b = base;\n removeNode(base);\n collectComponent(component);\n removeChildren(base);\n }\n if (component.__r) component.__r(null);\n }\n function Component(props, context) {\n this.__d = !0;\n this.context = context;\n this.props = props;\n this.state = this.state || {};\n }\n function render(vnode, parent, merge) {\n return diff(merge, vnode, {}, !1, parent, !1);\n }\n var options = {};\n var stack = [];\n var EMPTY_CHILDREN = [];\n var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n var items = [];\n var mounts = [];\n var diffLevel = 0;\n var isSvgMode = !1;\n var hydrating = !1;\n var components = {};\n extend(Component.prototype, {\n setState: function(state, callback) {\n var s = this.state;\n if (!this.__s) this.__s = extend({}, s);\n extend(s, 'function' == typeof state ? state(s, this.props) : state);\n if (callback) (this.__h = this.__h || []).push(callback);\n enqueueRender(this);\n },\n forceUpdate: function(callback) {\n if (callback) (this.__h = this.__h || []).push(callback);\n renderComponent(this, 2);\n },\n render: function() {}\n });\n var preact = {\n h: h,\n createElement: h,\n cloneElement: cloneElement,\n Component: Component,\n render: render,\n rerender: rerender,\n options: options\n };\n if ('undefined' != typeof module) module.exports = preact; else self.preact = preact;\n}();\n//# sourceMappingURL=preact.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n\nmodule.exports = require('./lib/core.js')\nrequire('./lib/done.js')\nrequire('./lib/es6-extensions.js')\nrequire('./lib/node-extensions.js')","'use strict';\n\nvar asap = require('asap')\n\nmodule.exports = Promise;\nfunction Promise(fn) {\n if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new')\n if (typeof fn !== 'function') throw new TypeError('not a function')\n var state = null\n var value = null\n var deferreds = []\n var self = this\n\n this.then = function(onFulfilled, onRejected) {\n return new self.constructor(function(resolve, reject) {\n handle(new Handler(onFulfilled, onRejected, resolve, reject))\n })\n }\n\n function handle(deferred) {\n if (state === null) {\n deferreds.push(deferred)\n return\n }\n asap(function() {\n var cb = state ? deferred.onFulfilled : deferred.onRejected\n if (cb === null) {\n (state ? deferred.resolve : deferred.reject)(value)\n return\n }\n var ret\n try {\n ret = cb(value)\n }\n catch (e) {\n deferred.reject(e)\n return\n }\n deferred.resolve(ret)\n })\n }\n\n function resolve(newValue) {\n try { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.')\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n var then = newValue.then\n if (typeof then === 'function') {\n doResolve(then.bind(newValue), resolve, reject)\n return\n }\n }\n state = true\n value = newValue\n finale()\n } catch (e) { reject(e) }\n }\n\n function reject(newValue) {\n state = false\n value = newValue\n finale()\n }\n\n function finale() {\n for (var i = 0, len = deferreds.length; i < len; i++)\n handle(deferreds[i])\n deferreds = null\n }\n\n doResolve(fn, resolve, reject)\n}\n\n\nfunction Handler(onFulfilled, onRejected, resolve, reject){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null\n this.onRejected = typeof onRejected === 'function' ? onRejected : null\n this.resolve = resolve\n this.reject = reject\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, onFulfilled, onRejected) {\n var done = false;\n try {\n fn(function (value) {\n if (done) return\n done = true\n onFulfilled(value)\n }, function (reason) {\n if (done) return\n done = true\n onRejected(reason)\n })\n } catch (ex) {\n if (done) return\n done = true\n onRejected(ex)\n }\n}\n","'use strict';\n\nvar Promise = require('./core.js')\nvar asap = require('asap')\n\nmodule.exports = Promise\nPromise.prototype.done = function (onFulfilled, onRejected) {\n var self = arguments.length ? this.then.apply(this, arguments) : this\n self.then(null, function (err) {\n asap(function () {\n throw err\n })\n })\n}","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js')\nvar asap = require('asap')\n\nmodule.exports = Promise\n\n/* Static Functions */\n\nfunction ValuePromise(value) {\n this.then = function (onFulfilled) {\n if (typeof onFulfilled !== 'function') return this\n return new Promise(function (resolve, reject) {\n asap(function () {\n try {\n resolve(onFulfilled(value))\n } catch (ex) {\n reject(ex);\n }\n })\n })\n }\n}\nValuePromise.prototype = Promise.prototype\n\nvar TRUE = new ValuePromise(true)\nvar FALSE = new ValuePromise(false)\nvar NULL = new ValuePromise(null)\nvar UNDEFINED = new ValuePromise(undefined)\nvar ZERO = new ValuePromise(0)\nvar EMPTYSTRING = new ValuePromise('')\n\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value\n\n if (value === null) return NULL\n if (value === undefined) return UNDEFINED\n if (value === true) return TRUE\n if (value === false) return FALSE\n if (value === 0) return ZERO\n if (value === '') return EMPTYSTRING\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then\n if (typeof then === 'function') {\n return new Promise(then.bind(value))\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex)\n })\n }\n }\n\n return new ValuePromise(value)\n}\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr)\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([])\n var remaining = args.length\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then\n if (typeof then === 'function') {\n then.call(val, function (val) { res(i, val) }, reject)\n return\n }\n }\n args[i] = val\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex)\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i])\n }\n })\n}\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) { \n reject(value);\n });\n}\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) { \n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n })\n });\n}\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n}\n","'use strict';\n\n//This file contains then/promise specific extensions that are only useful for node.js interop\n\nvar Promise = require('./core.js')\nvar asap = require('asap')\n\nmodule.exports = Promise\n\n/* Static Functions */\n\nPromise.denodeify = function (fn, argumentCount) {\n argumentCount = argumentCount || Infinity\n return function () {\n var self = this\n var args = Array.prototype.slice.call(arguments)\n return new Promise(function (resolve, reject) {\n while (args.length && args.length > argumentCount) {\n args.pop()\n }\n args.push(function (err, res) {\n if (err) reject(err)\n else resolve(res)\n })\n var res = fn.apply(self, args)\n if (res && (typeof res === 'object' || typeof res === 'function') && typeof res.then === 'function') {\n resolve(res)\n }\n })\n }\n}\nPromise.nodeify = function (fn) {\n return function () {\n var args = Array.prototype.slice.call(arguments)\n var callback = typeof args[args.length - 1] === 'function' ? args.pop() : null\n var ctx = this\n try {\n return fn.apply(this, arguments).nodeify(callback, ctx)\n } catch (ex) {\n if (callback === null || typeof callback == 'undefined') {\n return new Promise(function (resolve, reject) { reject(ex) })\n } else {\n asap(function () {\n callback.call(ctx, ex)\n })\n }\n }\n }\n}\n\nPromise.prototype.nodeify = function (callback, ctx) {\n if (typeof callback != 'function') return this\n\n this.then(function (value) {\n asap(function () {\n callback.call(ctx, null, value)\n })\n }, function (err) {\n asap(function () {\n callback.call(ctx, err)\n })\n })\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str) {\n\tif (typeof str !== 'string') {\n\t\treturn {};\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn {};\n\t}\n\n\treturn str.split('&').reduce(function (ret, param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\tkey = decodeURIComponent(key);\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tif (!ret.hasOwnProperty(key)) {\n\t\t\tret[key] = val;\n\t\t} else if (Array.isArray(ret[key])) {\n\t\t\tret[key].push(val);\n\t\t} else {\n\t\t\tret[key] = [ret[key], val];\n\t\t}\n\n\t\treturn ret;\n\t}, {});\n};\n\nexports.stringify = function (obj) {\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (Array.isArray(val)) {\n\t\t\treturn val.sort().map(function (val2) {\n\t\t\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val2);\n\t\t\t}).join('&');\n\t\t}\n\n\t\treturn strictUriEncode(key) + '=' + strictUriEncode(val);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","!function t(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define([],r):\"object\"==typeof exports?exports.Raphael=r():e.Raphael=r()}(this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return t[i].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p=\"\",e(0)}([function(t,e,r){var i,n;i=[r(1),r(3),r(4)],n=function(t){return t}.apply(e,i),!(void 0!==n&&(t.exports=n))},function(t,e,r){var i,n;i=[r(2)],n=function(t){function e(r){if(e.is(r,\"function\"))return w?r():t.on(\"raphael.DOMload\",r);if(e.is(r,Q))return e._engine.create[z](e,r.splice(0,3+e.is(r[0],$))).add(r);var i=Array.prototype.slice.call(arguments,0);if(e.is(i[i.length-1],\"function\")){var n=i.pop();return w?n.call(e._engine.create[z](e,i)):t.on(\"raphael.DOMload\",function(){n.call(e._engine.create[z](e,i))})}return e._engine.create[z](e,arguments)}function r(t){if(\"function\"==typeof t||Object(t)!==t)return t;var e=new t.constructor;for(var i in t)t[A](i)&&(e[i]=r(t[i]));return e}function i(t,e){for(var r=0,i=t.length;r=1e3&&delete o[l.shift()],l.push(s),o[s]=t[z](e,a),r?r(o[s]):o[s])}return n}function a(){return this.hex}function s(t,e){for(var r=[],i=0,n=t.length;n-2*!e>i;i+=2){var a=[{x:+t[i-2],y:+t[i-1]},{x:+t[i],y:+t[i+1]},{x:+t[i+2],y:+t[i+3]},{x:+t[i+4],y:+t[i+5]}];e?i?n-4==i?a[3]={x:+t[0],y:+t[1]}:n-2==i&&(a[2]={x:+t[0],y:+t[1]},a[3]={x:+t[2],y:+t[3]}):a[0]={x:+t[n-2],y:+t[n-1]}:n-4==i?a[3]=a[2]:i||(a[0]={x:+t[i],y:+t[i+1]}),r.push([\"C\",(-a[0].x+6*a[1].x+a[2].x)/6,(-a[0].y+6*a[1].y+a[2].y)/6,(a[1].x+6*a[2].x-a[3].x)/6,(a[1].y+6*a[2].y-a[3].y)/6,a[2].x,a[2].y])}return r}function o(t,e,r,i,n){var a=-3*e+9*r-9*i+3*n,s=t*a+6*e-12*r+6*i;return t*s-3*e+3*r}function l(t,e,r,i,n,a,s,l,h){null==h&&(h=1),h=h>1?1:h<0?0:h;for(var u=h/2,c=12,f=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],p=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],d=0,g=0;gd;)c/=2,f+=(pW(n,s)||W(e,i)W(a,o))){var l=(t*i-e*r)*(n-s)-(t-r)*(n*o-a*s),h=(t*i-e*r)*(a-o)-(e-i)*(n*o-a*s),u=(t-r)*(a-o)-(e-i)*(n-s);if(u){var c=l/u,f=h/u,p=+c.toFixed(2),d=+f.toFixed(2);if(!(p<+G(t,r).toFixed(2)||p>+W(t,r).toFixed(2)||p<+G(n,s).toFixed(2)||p>+W(n,s).toFixed(2)||d<+G(e,i).toFixed(2)||d>+W(e,i).toFixed(2)||d<+G(a,o).toFixed(2)||d>+W(a,o).toFixed(2)))return{x:c,y:f}}}}function c(t,e){return p(t,e)}function f(t,e){return p(t,e,1)}function p(t,r,i){var n=e.bezierBBox(t),a=e.bezierBBox(r);if(!e.isBBoxIntersect(n,a))return i?0:[];for(var s=l.apply(0,t),o=l.apply(0,r),h=W(~~(s/5),1),c=W(~~(o/5),1),f=[],p=[],d={},g=i?0:[],v=0;v=0&&S<=1.001&&A>=0&&A<=1.001&&(i?g++:g.push({x:C.x,y:C.y,t1:G(S,1),t2:G(A,1)}))}}return g}function d(t,r,i){t=e._path2curve(t),r=e._path2curve(r);for(var n,a,s,o,l,h,u,c,f,d,g=i?0:[],v=0,x=t.length;vi)return i;for(;ra?r=n:i=n,n=(i-r)/2+r}return n}var h=3*e,u=3*(i-e)-h,c=1-h-u,f=3*r,p=3*(n-r)-f,d=1-f-p;return o(t,1/(200*a))}function m(t,e){var r=[],i={};if(this.ms=e,this.times=1,t){for(var n in t)t[A](n)&&(i[ht(n)]=t[n],r.push(ht(n)));r.sort(Bt)}this.anim=i,this.top=r[r.length-1],this.percents=r}function b(r,i,n,a,s,o){n=ht(n);var l,h,u,c=[],f,p,d,v=r.ms,x={},m={},b={};if(a)for(w=0,B=Ee.length;wa*r.top){n=r.percents[w],p=r.percents[w-1]||0,v=v/r.top*(n-p),f=r.percents[w+1],l=r.anim[n];break}a&&i.attr(r.anim[r.percents[w]])}if(l){if(h)h.initstatus=a,h.start=new Date-h.ms*a;else{for(var C in l)if(l[A](C)&&(pt[A](C)||i.paper.customAttributes[A](C)))switch(x[C]=i.attr(C),null==x[C]&&(x[C]=ft[C]),m[C]=l[C],pt[C]){case $:b[C]=(m[C]-x[C])/v;break;case\"colour\":x[C]=e.getRGB(x[C]);var S=e.getRGB(m[C]);b[C]={r:(S.r-x[C].r)/v,g:(S.g-x[C].g)/v,b:(S.b-x[C].b)/v};break;case\"path\":var T=Qt(x[C],m[C]),E=T[1];for(x[C]=T[0],b[C]=[],w=0,B=x[C].length;w',Lt=Nt.firstChild,Lt.style.behavior=\"url(#default#VML)\",!Lt||\"object\"!=typeof Lt.adj)return e.type=R;Nt=null}e.svg=!(e.vml=\"VML\"==e.type),e._Paper=M,e.fn=N=M.prototype=e.prototype,e._id=0,e.is=function(t,e){return e=O.call(e),\"finite\"==e?!at[A](+t):\"array\"==e?t instanceof Array:\"null\"==e&&null===t||e==typeof t&&null!==t||\"object\"==e&&t===Object(t)||\"array\"==e&&Array.isArray&&Array.isArray(t)||tt.call(t).slice(8,-1).toLowerCase()==e},e.angle=function(t,r,i,n,a,s){if(null==a){var o=t-i,l=r-n;return o||l?(180+180*Y.atan2(-l,-o)/U+360)%360:0}return e.angle(t,r,a,s)-e.angle(i,n,a,s)},e.rad=function(t){return t%360*U/180},e.deg=function(t){return Math.round(180*t/U%360*1e3)/1e3},e.snapTo=function(t,r,i){if(i=e.is(i,\"finite\")?i:10,e.is(t,Q)){for(var n=t.length;n--;)if(H(t[n]-r)<=i)return t[n]}else{t=+t;var a=r%t;if(at-i)return r-a+t}return r};var zt=e.createUUID=function(t,e){return function(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(t,e).toUpperCase()}}(/[xy]/g,function(t){var e=16*Y.random()|0,r=\"x\"==t?e:3&e|8;return r.toString(16)});e.setWindow=function(r){t(\"raphael.setWindow\",e,T.win,r),T.win=r,T.doc=T.win.document,e._engine.initWin&&e._engine.initWin(T.win)};var Pt=function(t){if(e.vml){var r=/^\\s+|\\s+$/g,i;try{var a=new ActiveXObject(\"htmlfile\");a.write(\"\"),a.close(),i=a.body}catch(s){i=createPopup().document.body}var o=i.createTextRange();Pt=n(function(t){try{i.style.color=I(t).replace(r,R);var e=o.queryCommandValue(\"ForeColor\");return e=(255&e)<<16|65280&e|(16711680&e)>>>16,\"#\"+(\"000000\"+e.toString(16)).slice(-6)}catch(n){return\"none\"}})}else{var l=T.doc.createElement(\"i\");l.title=\"Raphaël Colour Picker\",l.style.display=\"none\",T.doc.body.appendChild(l),Pt=n(function(t){return l.style.color=t,T.doc.defaultView.getComputedStyle(l,R).getPropertyValue(\"color\")})}return Pt(t)},Ft=function(){return\"hsb(\"+[this.h,this.s,this.b]+\")\"},Rt=function(){return\"hsl(\"+[this.h,this.s,this.l]+\")\"},jt=function(){return this.hex},It=function(t,r,i){if(null==r&&e.is(t,\"object\")&&\"r\"in t&&\"g\"in t&&\"b\"in t&&(i=t.b,r=t.g,t=t.r),null==r&&e.is(t,Z)){var n=e.getRGB(t);t=n.r,r=n.g,i=n.b}return(t>1||r>1||i>1)&&(t/=255,r/=255,i/=255),[t,r,i]},qt=function(t,r,i,n){t*=255,r*=255,i*=255;var a={r:t,g:r,b:i,hex:e.rgb(t,r,i),toString:jt};return e.is(n,\"finite\")&&(a.opacity=n),a};e.color=function(t){var r;return e.is(t,\"object\")&&\"h\"in t&&\"s\"in t&&\"b\"in t?(r=e.hsb2rgb(t),t.r=r.r,t.g=r.g,t.b=r.b,t.hex=r.hex):e.is(t,\"object\")&&\"h\"in t&&\"s\"in t&&\"l\"in t?(r=e.hsl2rgb(t),t.r=r.r,t.g=r.g,t.b=r.b,t.hex=r.hex):(e.is(t,\"string\")&&(t=e.getRGB(t)),e.is(t,\"object\")&&\"r\"in t&&\"g\"in t&&\"b\"in t?(r=e.rgb2hsl(t),t.h=r.h,t.s=r.s,t.l=r.l,r=e.rgb2hsb(t),t.v=r.b):(t={hex:\"none\"},t.r=t.g=t.b=t.h=t.s=t.v=t.l=-1)),t.toString=jt,t},e.hsb2rgb=function(t,e,r,i){this.is(t,\"object\")&&\"h\"in t&&\"s\"in t&&\"b\"in t&&(r=t.b,e=t.s,i=t.o,t=t.h),t*=360;var n,a,s,o,l;return t=t%360/60,l=r*e,o=l*(1-H(t%2-1)),n=a=s=r-l,t=~~t,n+=[l,o,0,0,o,l][t],a+=[o,l,l,o,0,0][t],s+=[0,0,o,l,l,o][t],qt(n,a,s,i)},e.hsl2rgb=function(t,e,r,i){this.is(t,\"object\")&&\"h\"in t&&\"s\"in t&&\"l\"in t&&(r=t.l,e=t.s,t=t.h),(t>1||e>1||r>1)&&(t/=360,e/=100,r/=100),t*=360;var n,a,s,o,l;return t=t%360/60,l=2*e*(r<.5?r:1-r),o=l*(1-H(t%2-1)),n=a=s=r-l/2,t=~~t,n+=[l,o,0,0,o,l][t],a+=[o,l,l,o,0,0][t],s+=[0,0,o,l,l,o][t],qt(n,a,s,i)},e.rgb2hsb=function(t,e,r){r=It(t,e,r),t=r[0],e=r[1],r=r[2];var i,n,a,s;return a=W(t,e,r),s=a-G(t,e,r),i=0==s?null:a==t?(e-r)/s:a==e?(r-t)/s+2:(t-e)/s+4,i=(i+360)%6*60/360,n=0==s?0:s/a,{h:i,s:n,b:a,toString:Ft}},e.rgb2hsl=function(t,e,r){r=It(t,e,r),t=r[0],e=r[1],r=r[2];var i,n,a,s,o,l;return s=W(t,e,r),o=G(t,e,r),l=s-o,i=0==l?null:s==t?(e-r)/l:s==e?(r-t)/l+2:(t-e)/l+4,i=(i+360)%6*60/360,a=(s+o)/2,n=0==l?0:a<.5?l/(2*a):l/(2-2*a),{h:i,s:n,l:a,toString:Rt}},e._path2string=function(){return this.join(\",\").replace(xt,\"$1\")};var Dt=e._preload=function(t,e){var r=T.doc.createElement(\"img\");r.style.cssText=\"position:absolute;left:-9999em;top:-9999em\",r.onload=function(){e.call(this),this.onload=null,T.doc.body.removeChild(this)},r.onerror=function(){T.doc.body.removeChild(this)},T.doc.body.appendChild(r),r.src=t};e.getRGB=n(function(t){if(!t||(t=I(t)).indexOf(\"-\")+1)return{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:a};if(\"none\"==t)return{r:-1,g:-1,b:-1,hex:\"none\",toString:a};!(vt[A](t.toLowerCase().substring(0,2))||\"#\"==t.charAt())&&(t=Pt(t));var r,i,n,s,o,l,h,u=t.match(nt);return u?(u[2]&&(s=ut(u[2].substring(5),16),n=ut(u[2].substring(3,5),16),i=ut(u[2].substring(1,3),16)),u[3]&&(s=ut((l=u[3].charAt(3))+l,16),n=ut((l=u[3].charAt(2))+l,16),i=ut((l=u[3].charAt(1))+l,16)),u[4]&&(h=u[4][q](gt),i=ht(h[0]),\"%\"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),\"%\"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),\"%\"==h[2].slice(-1)&&(s*=2.55),\"rgba\"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&\"%\"==h[3].slice(-1)&&(o/=100)),u[5]?(h=u[5][q](gt),i=ht(h[0]),\"%\"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),\"%\"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),\"%\"==h[2].slice(-1)&&(s*=2.55),(\"deg\"==h[0].slice(-3)||\"°\"==h[0].slice(-1))&&(i/=360),\"hsba\"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&\"%\"==h[3].slice(-1)&&(o/=100),e.hsb2rgb(i,n,s,o)):u[6]?(h=u[6][q](gt),i=ht(h[0]),\"%\"==h[0].slice(-1)&&(i*=2.55),n=ht(h[1]),\"%\"==h[1].slice(-1)&&(n*=2.55),s=ht(h[2]),\"%\"==h[2].slice(-1)&&(s*=2.55),(\"deg\"==h[0].slice(-3)||\"°\"==h[0].slice(-1))&&(i/=360),\"hsla\"==u[1].toLowerCase().slice(0,4)&&(o=ht(h[3])),h[3]&&\"%\"==h[3].slice(-1)&&(o/=100),e.hsl2rgb(i,n,s,o)):(u={r:i,g:n,b:s,toString:a},u.hex=\"#\"+(16777216|s|n<<8|i<<16).toString(16).slice(1),e.is(o,\"finite\")&&(u.opacity=o),u)):{r:-1,g:-1,b:-1,hex:\"none\",error:1,toString:a}},e),e.hsb=n(function(t,r,i){return e.hsb2rgb(t,r,i).hex}),e.hsl=n(function(t,r,i){return e.hsl2rgb(t,r,i).hex}),e.rgb=n(function(t,e,r){function i(t){return t+.5|0}return\"#\"+(16777216|i(r)|i(e)<<8|i(t)<<16).toString(16).slice(1)}),e.getColor=function(t){var e=this.getColor.start=this.getColor.start||{h:0,s:1,b:t||.75},r=this.hsb2rgb(e.h,e.s,e.b);return e.h+=.075,e.h>1&&(e.h=0,e.s-=.2,e.s<=0&&(this.getColor.start={h:0,s:1,b:e.b})),r.hex},e.getColor.reset=function(){delete this.start},e.parsePathString=function(t){if(!t)return null;var r=Vt(t);if(r.arr)return Yt(r.arr);var i={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},n=[];return e.is(t,Q)&&e.is(t[0],Q)&&(n=Yt(t)),n.length||I(t).replace(yt,function(t,e,r){var a=[],s=e.toLowerCase();if(r.replace(bt,function(t,e){e&&a.push(+e)}),\"m\"==s&&a.length>2&&(n.push([e][P](a.splice(0,2))),s=\"l\",e=\"m\"==e?\"l\":\"L\"),\"r\"==s)n.push([e][P](a));else for(;a.length>=i[s]&&(n.push([e][P](a.splice(0,i[s]))),i[s]););}),n.toString=e._path2string,r.arr=Yt(n),n},e.parseTransformString=n(function(t){if(!t)return null;var r={r:3,s:4,t:2,m:6},i=[];return e.is(t,Q)&&e.is(t[0],Q)&&(i=Yt(t)),i.length||I(t).replace(mt,function(t,e,r){var n=[],a=O.call(e);r.replace(bt,function(t,e){e&&n.push(+e)}),i.push([e][P](n))}),i.toString=e._path2string,i});var Vt=function(t){var e=Vt.ps=Vt.ps||{};return e[t]?e[t].sleep=100:e[t]={sleep:100},setTimeout(function(){for(var r in e)e[A](r)&&r!=t&&(e[r].sleep--,!e[r].sleep&&delete e[r])}),e[t]};e.findDotsAtSegment=function(t,e,r,i,n,a,s,o,l){var h=1-l,u=X(h,3),c=X(h,2),f=l*l,p=f*l,d=u*t+3*c*l*r+3*h*l*l*n+p*s,g=u*e+3*c*l*i+3*h*l*l*a+p*o,v=t+2*l*(r-t)+f*(n-2*r+t),x=e+2*l*(i-e)+f*(a-2*i+e),y=r+2*l*(n-r)+f*(s-2*n+r),m=i+2*l*(a-i)+f*(o-2*a+i),b=h*t+l*r,_=h*e+l*i,w=h*n+l*s,k=h*a+l*o,B=90-180*Y.atan2(v-y,x-m)/U;return(v>y||x=t.x&&e<=t.x2&&r>=t.y&&r<=t.y2},e.isBBoxIntersect=function(t,r){var i=e.isPointInsideBBox;return i(r,t.x,t.y)||i(r,t.x2,t.y)||i(r,t.x,t.y2)||i(r,t.x2,t.y2)||i(t,r.x,r.y)||i(t,r.x2,r.y)||i(t,r.x,r.y2)||i(t,r.x2,r.y2)||(t.xr.x||r.xt.x)&&(t.yr.y||r.yt.y)},e.pathIntersection=function(t,e){return d(t,e)},e.pathIntersectionNumber=function(t,e){return d(t,e,1)},e.isPointInsidePath=function(t,r,i){var n=e.pathBBox(t);return e.isPointInsideBBox(n,r,i)&&d(t,[[\"M\",r,i],[\"H\",n.x2+10]],1)%2==1},e._removedFactory=function(e){return function(){t(\"raphael.log\",null,\"Raphaël: you are calling to method “\"+e+\"” of removed object\",e)}};var Ot=e.pathBBox=function(t){var e=Vt(t);if(e.bbox)return r(e.bbox);if(!t)return{x:0,y:0,width:0,height:0,x2:0,y2:0};t=Qt(t);for(var i=0,n=0,a=[],s=[],o,l=0,h=t.length;l1&&(b=Y.sqrt(b),r=b*r,i=b*i);var _=r*r,w=i*i,k=(s==o?-1:1)*Y.sqrt(H((_*w-_*m*m-w*y*y)/(_*m*m+w*y*y))),B=k*r*m/i+(t+l)/2,C=k*-i*y/r+(e+h)/2,S=Y.asin(((e-C)/i).toFixed(9)),A=Y.asin(((h-C)/i).toFixed(9));S=tA&&(S-=2*U),!o&&A>S&&(A-=2*U)}var T=A-S;if(H(T)>c){var E=A,M=l,N=h;A=S+c*(o&&A>S?1:-1),l=B+r*Y.cos(A),h=C+i*Y.sin(A),p=Ut(l,h,r,i,a,0,o,M,N,[A,E,B,C])}T=A-S;var L=Y.cos(S),z=Y.sin(S),F=Y.cos(A),R=Y.sin(A),j=Y.tan(T/4),I=4/3*r*j,D=4/3*i*j,V=[t,e],O=[t+I*z,e-D*L],W=[l+I*R,h-D*F],G=[l,h];if(O[0]=2*V[0]-O[0],O[1]=2*V[1]-O[1],u)return[O,W,G][P](p);p=[O,W,G][P](p).join()[q](\",\");for(var X=[],$=0,Z=p.length;$\"1e12\"&&(c=.5),H(f)>\"1e12\"&&(f=.5),c>0&&c<1&&(g=$t(t,e,r,i,n,a,s,o,c),d.push(g.x),p.push(g.y)),f>0&&f<1&&(g=$t(t,e,r,i,n,a,s,o,f),d.push(g.x),p.push(g.y)),l=a-2*i+e-(o-2*a+i),h=2*(i-e)-2*(a-i),u=e-i,c=(-h+Y.sqrt(h*h-4*l*u))/2/l,f=(-h-Y.sqrt(h*h-4*l*u))/2/l,H(c)>\"1e12\"&&(c=.5),H(f)>\"1e12\"&&(f=.5),c>0&&c<1&&(g=$t(t,e,r,i,n,a,s,o,c),d.push(g.x),p.push(g.y)),f>0&&f<1&&(g=$t(t,e,r,i,n,a,s,o,f),d.push(g.x),p.push(g.y)),{min:{x:G[z](0,d),y:G[z](0,p)},max:{x:W[z](0,d),y:W[z](0,p)}}}),Qt=e._path2curve=n(function(t,e){var r=!e&&Vt(t);if(!e&&r.curve)return Yt(r.curve);for(var i=Gt(t),n=e&&Gt(e),a={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},s={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},o=(function(t,e,r){var i,n,a={T:1,Q:1};if(!t)return[\"C\",e.x,e.y,e.x,e.y,e.x,e.y];switch(!(t[0]in a)&&(e.qx=e.qy=null),t[0]){case\"M\":e.X=t[1],e.Y=t[2];break;case\"A\":t=[\"C\"][P](Ut[z](0,[e.x,e.y][P](t.slice(1))));break;case\"S\":\"C\"==r||\"S\"==r?(i=2*e.x-e.bx,n=2*e.y-e.by):(i=e.x,n=e.y),t=[\"C\",i,n][P](t.slice(1));break;case\"T\":\"Q\"==r||\"T\"==r?(e.qx=2*e.x-e.qx,e.qy=2*e.y-e.qy):(e.qx=e.x,e.qy=e.y),t=[\"C\"][P](Xt(e.x,e.y,e.qx,e.qy,t[1],t[2]));break;case\"Q\":e.qx=t[1],e.qy=t[2],t=[\"C\"][P](Xt(e.x,e.y,t[1],t[2],t[3],t[4]));break;case\"L\":t=[\"C\"][P](Ht(e.x,e.y,t[1],t[2]));break;case\"H\":t=[\"C\"][P](Ht(e.x,e.y,t[1],e.y));break;case\"V\":t=[\"C\"][P](Ht(e.x,e.y,e.x,t[1]));break;case\"Z\":t=[\"C\"][P](Ht(e.x,e.y,e.X,e.Y))}return t}),l=function(t,e){if(t[e].length>7){t[e].shift();for(var r=t[e];r.length;)u[e]=\"A\",n&&(c[e]=\"A\"),t.splice(e++,0,[\"C\"][P](r.splice(0,6)));t.splice(e,1),g=W(i.length,n&&n.length||0)}},h=function(t,e,r,a,s){t&&e&&\"M\"==t[s][0]&&\"M\"!=e[s][0]&&(e.splice(s,0,[\"M\",a.x,a.y]),r.bx=0,r.by=0,r.x=t[s][1],r.y=t[s][2],g=W(i.length,n&&n.length||0))},u=[],c=[],f=\"\",p=\"\",d=0,g=W(i.length,n&&n.length||0);dn){if(r&&!c.start){if(f=ke(s,o,l[1],l[2],l[3],l[4],l[5],l[6],n-p),u+=[\"C\"+f.start.x,f.start.y,f.m.x,f.m.y,f.x,f.y],a)return u;c.start=u,u=[\"M\"+f.x,f.y+\"C\"+f.n.x,f.n.y,f.end.x,f.end.y,l[5],l[6]].join(),p+=h,s=+l[5],o=+l[6];continue}if(!t&&!r)return f=ke(s,o,l[1],l[2],l[3],l[4],l[5],l[6],n-p),{x:f.x,y:f.y,alpha:f.alpha}}p+=h,s=+l[5],o=+l[6]}u+=l.shift()+l}return c.end=u,f=t?p:r?c:e.findDotsAtSegment(s,o,l[0],l[1],l[2],l[3],l[4],l[5],1),f.alpha&&(f={x:f.x,y:f.y,alpha:f.alpha}),f}},Ce=Be(1),Se=Be(),Ae=Be(0,1);e.getTotalLength=Ce,e.getPointAtLength=Se,e.getSubpath=function(t,e,r){if(this.getTotalLength(t)-r<1e-6)return Ae(t,e).end;var i=Ae(t,r,1);return e?Ae(i,e).end:i},ye.getTotalLength=function(){var t=this.getPath();if(t)return this.node.getTotalLength?this.node.getTotalLength():Ce(t)},ye.getPointAtLength=function(t){var e=this.getPath();if(e)return Se(e,t)},ye.getPath=function(){var t,r=e._getPath[this.type];if(\"text\"!=this.type&&\"set\"!=this.type)return r&&(t=r(this)),t},ye.getSubpath=function(t,r){var i=this.getPath();if(i)return e.getSubpath(i,t,r)};var Te=e.easing_formulas={linear:function(t){return t},\"<\":function(t){return X(t,1.7)},\">\":function(t){return X(t,.48)},\"<>\":function(t){var e=.48-t/1.04,r=Y.sqrt(.1734+e*e),i=r-e,n=X(H(i),1/3)*(i<0?-1:1),a=-r-e,s=X(H(a),1/3)*(a<0?-1:1),o=n+s+.5;return 3*(1-o)*o*o+o*o*o},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){t-=1;var e=1.70158;return t*t*((e+1)*t+e)+1},elastic:function(t){return t==!!t?t:X(2,-10*t)*Y.sin((t-.075)*(2*U)/.3)+1},bounce:function(t){var e=7.5625,r=2.75,i;return t<1/r?i=e*t*t:t<2/r?(t-=1.5/r,i=e*t*t+.75):t<2.5/r?(t-=2.25/r,i=e*t*t+.9375):(t-=2.625/r,i=e*t*t+.984375),i}};Te.easeIn=Te[\"ease-in\"]=Te[\"<\"],Te.easeOut=Te[\"ease-out\"]=Te[\">\"],Te.easeInOut=Te[\"ease-in-out\"]=Te[\"<>\"],Te[\"back-in\"]=Te.backIn,Te[\"back-out\"]=Te.backOut;var Ee=[],Me=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){setTimeout(t,16)},Ne=function(){for(var r=+new Date,i=0;i1&&!n.next){for(v in u)u[A](v)&&(g[v]=n.totalOrigin[v]);n.el.attr(g),b(n.anim,n.el,n.anim.percents[0],null,n.totalOrigin,n.repeat-1)}n.next&&!n.stop&&b(n.anim,n.el,n.next,null,n.totalOrigin,n.repeat)}}}Ee.length&&Me(Ne)},Le=function(t){return t>255?255:t<0?0:t};ye.animateWith=function(t,r,i,n,a,s){var o=this;if(o.removed)return s&&s.call(o),o;var l=i instanceof m?i:e.animation(i,n,a,s),h,u;b(l,o,l.percents[0],null,o.attr());for(var c=0,f=Ee.length;cl&&(l=u)}l+=\"%\",!t[l].callback&&(t[l].callback=n)}return new m(t,r)},ye.animate=function(t,r,i,n){var a=this;if(a.removed)return n&&n.call(a),a;var s=t instanceof m?t:e.animation(t,r,i,n);return b(s,a,s.percents[0],null,a.attr()),a},ye.setTime=function(t,e){return t&&null!=e&&this.status(t,G(e,t.ms)/t.ms),this},ye.status=function(t,e){var r=[],i=0,n,a;if(null!=e)return b(t,this,-1,G(e,1)),this;for(n=Ee.length;i1)for(var i=0,n=r.length;i.5)-1;l(f-.5,2)+l(p-.5,2)>.25&&(p=a.sqrt(.25-l(f-.5,2))*n+.5)&&.5!=p&&(p=p.toFixed(5)-1e-5*n)}return c}),n=n.split(/\\s*\\-\\s*/),\"linear\"==h){var b=n.shift();if(b=-i(b),isNaN(b))return null;var _=[0,0,a.cos(t.rad(b)),a.sin(t.rad(b))],w=1/(s(o(_[2]),o(_[3]))||1);_[2]*=w,_[3]*=w,_[2]<0&&(_[0]=-_[2],_[2]=0),_[3]<0&&(_[1]=-_[3],_[3]=0)}var k=t._parseDots(n);if(!k)return null;if(u=u.replace(/[\\(\\)\\s,\\xb0#]/g,\"_\"),e.gradient&&u!=e.gradient.id&&(g.defs.removeChild(e.gradient),delete e.gradient),!e.gradient){y=v(h+\"Gradient\",{id:u}),e.gradient=y,v(y,\"radial\"==h?{fx:f,fy:p}:{x1:_[0],y1:_[1],x2:_[2],y2:_[3],gradientTransform:e.matrix.invert()}),g.defs.appendChild(y);for(var B=0,C=k.length;B1?z.opacity/100:z.opacity});case\"stroke\":z=t.getRGB(g),l.setAttribute(d,z.hex),\"stroke\"==d&&z[e](\"opacity\")&&v(l,{\"stroke-opacity\":z.opacity>1?z.opacity/100:z.opacity}),\"stroke\"==d&&i._.arrows&&(\"startString\"in i._.arrows&&_(i,i._.arrows.startString),\"endString\"in i._.arrows&&_(i,i._.arrows.endString,1));break;case\"gradient\":(\"circle\"==i.type||\"ellipse\"==i.type||\"r\"!=r(g).charAt())&&x(i,g);break;case\"opacity\":u.gradient&&!u[e](\"stroke-opacity\")&&v(l,{\"stroke-opacity\":g>1?g/100:g});case\"fill-opacity\":if(u.gradient){P=t._g.doc.getElementById(l.getAttribute(\"fill\").replace(/^url\\(#|\\)$/g,c)),P&&(F=P.getElementsByTagName(\"stop\"),v(F[F.length-1],{\"stop-opacity\":g}));break}default:\"font-size\"==d&&(g=n(g,10)+\"px\");var R=d.replace(/(\\-.)/g,function(t){return t.substring(1).toUpperCase()});l.style[R]=g,i._.dirty=1,l.setAttribute(d,g)}}S(i,a),l.style.visibility=f},C=1.2,S=function(i,a){if(\"text\"==i.type&&(a[e](\"text\")||a[e](\"font\")||a[e](\"font-size\")||a[e](\"x\")||a[e](\"y\"))){var s=i.attrs,o=i.node,l=o.firstChild?n(t._g.doc.defaultView.getComputedStyle(o.firstChild,c).getPropertyValue(\"font-size\"),10):10;if(a[e](\"text\")){for(s.text=a.text;o.firstChild;)o.removeChild(o.firstChild);for(var h=r(a.text).split(\"\\n\"),u=[],f,p=0,d=h.length;p\"));var Z=X.getBoundingClientRect();m.W=f.w=(Z.right-Z.left)/U,m.H=f.h=(Z.bottom-Z.top)/U,m.X=f.x,m.Y=f.y+m.H/2,(\"x\"in l||\"y\"in l)&&(m.path.v=t.format(\"m{0},{1}l{2},{1}\",a(f.x*b),a(f.y*b),a(f.x*b)+1));for(var Q=[\"x\",\"y\",\"text\",\"font\",\"font-family\",\"font-weight\",\"font-style\",\"font-size\"],J=0,K=Q.length;J.25&&(r=n.sqrt(.25-l(e-.5,2))*(2*(r>.5)-1)+.5),f=e+p+r),d}),a=a.split(/\\s*\\-\\s*/),\"linear\"==c){var g=a.shift();if(g=-i(g),isNaN(g))return null}var v=t._parseDots(a);if(!v)return null;if(e=e.shape||e.node,v.length){e.removeChild(s),s.on=!0,s.method=\"none\",s.color=v[0].color,s.color2=v[v.length-1].color;for(var x=[],y=0,m=v.length;y')}}catch(r){N=function(t){return e.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">')}}},t._engine.initWin(t._g.win),t._engine.create=function(){var e=t._getContainer.apply(0,arguments),r=e.container,i=e.height,n,a=e.width,s=e.x,o=e.y;if(!r)throw new Error(\"VML container not found.\");var l=new t._Paper,h=l.canvas=t._g.doc.createElement(\"div\"),u=h.style;return s=s||0,o=o||0,a=a||512,i=i||342,l.width=a,l.height=i,a==+a&&(a+=\"px\"),i==+i&&(i+=\"px\"),l.coordsize=1e3*b+p+1e3*b,l.coordorigin=\"0 0\",l.span=t._g.doc.createElement(\"span\"),l.span.style.cssText=\"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;\",h.appendChild(l.span),u.cssText=t.format(\"top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden\",a,i),1==r?(t._g.doc.body.appendChild(h),u.left=s+\"px\",u.top=o+\"px\",u.position=\"absolute\"):r.firstChild?r.insertBefore(h,r.firstChild):r.appendChild(h),l.renderfix=function(){},l},t.prototype.clear=function(){t.eve(\"raphael.clear\",this),this.canvas.innerHTML=d,this.span=t._g.doc.createElement(\"span\"),this.span.style.cssText=\"position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;\",this.canvas.appendChild(this.span),this.bottom=this.top=null},t.prototype.remove=function(){t.eve(\"raphael.remove\",this),this.canvas.parentNode.removeChild(this.canvas);for(var e in this)this[e]=\"function\"==typeof this[e]?t._removedFactory(e):null;return!0};var L=t.st;for(var z in M)M[e](z)&&!L[e](z)&&(L[z]=function(t){return function(){var e=arguments;return this.forEach(function(r){r[t].apply(r,e)})}}(z))}}.apply(e,i),!(void 0!==n&&(t.exports=n))}])});","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.reduxLogger=e.reduxLogger||{})}(this,function(e){\"use strict\";function t(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}function r(e,t){Object.defineProperty(this,\"kind\",{value:e,enumerable:!0}),t&&t.length&&Object.defineProperty(this,\"path\",{value:t,enumerable:!0})}function n(e,t,r){n.super_.call(this,\"E\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0}),Object.defineProperty(this,\"rhs\",{value:r,enumerable:!0})}function o(e,t){o.super_.call(this,\"N\",e),Object.defineProperty(this,\"rhs\",{value:t,enumerable:!0})}function i(e,t){i.super_.call(this,\"D\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0})}function a(e,t,r){a.super_.call(this,\"A\",e),Object.defineProperty(this,\"index\",{value:t,enumerable:!0}),Object.defineProperty(this,\"item\",{value:r,enumerable:!0})}function f(e,t,r){var n=e.slice((r||t)+1||e.length);return e.length=t<0?e.length+t:t,e.push.apply(e,n),e}function u(e){var t=\"undefined\"==typeof e?\"undefined\":N(e);return\"object\"!==t?t:e===Math?\"math\":null===e?\"null\":Array.isArray(e)?\"array\":\"[object Date]\"===Object.prototype.toString.call(e)?\"date\":\"function\"==typeof e.toString&&/^\\/.*\\//.test(e.toString())?\"regexp\":\"object\"}function l(e,t,r,c,s,d,p){s=s||[],p=p||[];var g=s.slice(0);if(\"undefined\"!=typeof d){if(c){if(\"function\"==typeof c&&c(g,d))return;if(\"object\"===(\"undefined\"==typeof c?\"undefined\":N(c))){if(c.prefilter&&c.prefilter(g,d))return;if(c.normalize){var h=c.normalize(g,d,e,t);h&&(e=h[0],t=h[1])}}}g.push(d)}\"regexp\"===u(e)&&\"regexp\"===u(t)&&(e=e.toString(),t=t.toString());var y=\"undefined\"==typeof e?\"undefined\":N(e),v=\"undefined\"==typeof t?\"undefined\":N(t),b=\"undefined\"!==y||p&&p[p.length-1].lhs&&p[p.length-1].lhs.hasOwnProperty(d),m=\"undefined\"!==v||p&&p[p.length-1].rhs&&p[p.length-1].rhs.hasOwnProperty(d);if(!b&&m)r(new o(g,t));else if(!m&&b)r(new i(g,e));else if(u(e)!==u(t))r(new n(g,e,t));else if(\"date\"===u(e)&&e-t!==0)r(new n(g,e,t));else if(\"object\"===y&&null!==e&&null!==t)if(p.filter(function(t){return t.lhs===e}).length)e!==t&&r(new n(g,e,t));else{if(p.push({lhs:e,rhs:t}),Array.isArray(e)){var w;e.length;for(w=0;w=t.length?r(new a(g,w,new i(void 0,e[w]))):l(e[w],t[w],r,c,g,w,p);for(;w=0?(l(e[n],t[n],r,c,g,n,p),S=f(S,i)):l(e[n],void 0,r,c,g,n,p)}),S.forEach(function(e){l(void 0,t[e],r,c,g,e,p)})}p.length=p.length-1}else e!==t&&(\"number\"===y&&isNaN(e)&&isNaN(t)||r(new n(g,e,t)))}function c(e,t,r,n){return n=n||[],l(e,t,function(e){e&&n.push(e)},r),n.length?n:void 0}function s(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},L,e),r=t.logger,n=t.stateTransformer,o=t.errorTransformer,i=t.predicate,a=t.logErrors,f=t.diffPredicate;if(\"undefined\"==typeof r)return function(){return function(e){return function(t){return e(t)}}};if(e.getState&&e.dispatch)return console.error(\"[redux-logger] redux-logger not installed. Make sure to pass logger instance as middleware:\\n// Logger with default options\\nimport { logger } from 'redux-logger'\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n// Or you can create your own logger with custom options http://bit.ly/redux-logger-options\\nimport createLogger from 'redux-logger'\\nconst logger = createLogger({\\n // ...options\\n});\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n\"),function(){return function(e){return function(t){return e(t)}}};var u=[];return function(e){var r=e.getState;return function(e){return function(l){if(\"function\"==typeof i&&!i(r,l))return e(l);var c={};u.push(c),c.started=O.now(),c.startedTime=new Date,c.prevState=n(r()),c.action=l;var s=void 0;if(a)try{s=e(l)}catch(e){c.error=o(e)}else s=e(l);c.took=O.now()-c.started,c.nextState=n(r());var d=t.diff&&\"function\"==typeof f?f(r,l):t.diff;if(x(u,Object.assign({},t,{diff:d})),u.length=0,c.error)throw c.error;return s}}}}var k,j,E=function(e,t){return new Array(t+1).join(e)},A=function(e,t){return E(\"0\",t-e.toString().length)+e},D=function(e){return A(e.getHours(),2)+\":\"+A(e.getMinutes(),2)+\":\"+A(e.getSeconds(),2)+\".\"+A(e.getMilliseconds(),3)},O=\"undefined\"!=typeof performance&&null!==performance&&\"function\"==typeof performance.now?performance:Date,N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},P=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:{},t=e.dispatch,r=e.getState;return\"function\"==typeof t||\"function\"==typeof r?S()({dispatch:t,getState:r}):void console.error(\"\\n[redux-logger v3] BREAKING CHANGE\\n[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with default settings.\\n[redux-logger v3] Change\\n[redux-logger v3] import createLogger from 'redux-logger'\\n[redux-logger v3] to\\n[redux-logger v3] import { createLogger } from 'redux-logger'\\n\")};e.defaults=L,e.createLogger=S,e.logger=T,e.default=T,Object.defineProperty(e,\"__esModule\",{value:!0})});\n","'use strict';\n\nexports.__esModule = true;\nfunction createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexports['default'] = thunk;","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = applyMiddleware;\n\nvar _compose = require('./compose');\n\nvar _compose2 = _interopRequireDefault(_compose);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","'use strict';\n\nexports.__esModule = true;\nexports['default'] = bindActionCreators;\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}","'use strict';\n\nexports.__esModule = true;\nexports['default'] = combineReducers;\n\nvar _createStore = require('./createStore');\n\nvar _isPlainObject = require('lodash/isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _warning = require('./utils/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!(0, _isPlainObject2['default'])(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerSanity(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: _createStore.ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + _createStore.ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (\"production\" !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n (0, _warning2['default'])('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n if (\"production\" !== 'production') {\n var unexpectedKeyCache = {};\n }\n\n var sanityError;\n try {\n assertReducerSanity(finalReducers);\n } catch (e) {\n sanityError = e;\n }\n\n return function combination() {\n var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var action = arguments[1];\n\n if (sanityError) {\n throw sanityError;\n }\n\n if (\"production\" !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n (0, _warning2['default'])(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var i = 0; i < finalReducerKeys.length; i++) {\n var key = finalReducerKeys[i];\n var reducer = finalReducers[key];\n var previousStateForKey = state[key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(key, action);\n throw new Error(errorMessage);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = compose;\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nfunction compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n var last = funcs[funcs.length - 1];\n var rest = funcs.slice(0, -1);\n return function () {\n return rest.reduceRight(function (composed, f) {\n return f(composed);\n }, last.apply(undefined, arguments));\n };\n}","'use strict';\n\nexports.__esModule = true;\nexports.ActionTypes = undefined;\nexports['default'] = createStore;\n\nvar _isPlainObject = require('lodash/isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _symbolObservable = require('symbol-observable');\n\nvar _symbolObservable2 = _interopRequireDefault(_symbolObservable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar ActionTypes = exports.ActionTypes = {\n INIT: '@@redux/INIT'\n};\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} enhancer The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!(0, _isPlainObject2['default'])(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/zenparsing/es-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[_symbolObservable2['default']] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[_symbolObservable2['default']] = observable, _ref2;\n}","'use strict';\n\nexports.__esModule = true;\nexports.compose = exports.applyMiddleware = exports.bindActionCreators = exports.combineReducers = exports.createStore = undefined;\n\nvar _createStore = require('./createStore');\n\nvar _createStore2 = _interopRequireDefault(_createStore);\n\nvar _combineReducers = require('./combineReducers');\n\nvar _combineReducers2 = _interopRequireDefault(_combineReducers);\n\nvar _bindActionCreators = require('./bindActionCreators');\n\nvar _bindActionCreators2 = _interopRequireDefault(_bindActionCreators);\n\nvar _applyMiddleware = require('./applyMiddleware');\n\nvar _applyMiddleware2 = _interopRequireDefault(_applyMiddleware);\n\nvar _compose = require('./compose');\n\nvar _compose2 = _interopRequireDefault(_compose);\n\nvar _warning = require('./utils/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (\"production\" !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n (0, _warning2['default'])('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexports.createStore = _createStore2['default'];\nexports.combineReducers = _combineReducers2['default'];\nexports.bindActionCreators = _bindActionCreators2['default'];\nexports.applyMiddleware = _applyMiddleware2['default'];\nexports.compose = _compose2['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = warning;\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n}","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","function Handler(f, once, priority) {\n this.f = f\n this.once = once\n this.priority = priority\n}\n\nfunction Subscription() {\n this.handlers = []\n}\nexports.Subscription = Subscription\n\nfunction insert(s, handler) {\n var pos = 0\n for (; pos < s.handlers.length; pos++)\n if (s.handlers[pos].priority < handler.priority) break\n s.handlers = s.handlers.slice(0, pos).concat(handler).concat(s.handlers.slice(pos))\n}\n\nSubscription.prototype.handlersForDispatch = function() {\n var handlers = this.handlers, updated = null\n for (var i = handlers.length - 1; i >= 0; i--) if (handlers[i].once) {\n if (!updated) updated = handlers.slice()\n updated.splice(i, 1)\n }\n if (updated) this.handlers = updated\n return handlers\n}\n\nSubscription.prototype.add = function(f, priority) {\n insert(this, new Handler(f, false, priority || 0))\n}\n\nSubscription.prototype.addOnce = function(f, priority) {\n insert(this, new Handler(f, true, priority || 0))\n}\n\nSubscription.prototype.remove = function(f) {\n for (var i = 0; i < this.handlers.length; i++) if (this.handlers[i].f == f) {\n this.handlers = this.handlers.slice(0, i).concat(this.handlers.slice(i + 1))\n return\n }\n}\n\nSubscription.prototype.hasHandler = function() {\n return this.handlers.length > 0\n}\n\nSubscription.prototype.dispatch = function() {\n var handlers = this.handlersForDispatch()\n for (var i = 0; i < handlers.length; i++)\n handlers[i].f.apply(null, arguments)\n}\n\nfunction PipelineSubscription() {\n Subscription.call(this)\n}\nexports.PipelineSubscription = PipelineSubscription\n\nPipelineSubscription.prototype = new Subscription\n\nPipelineSubscription.prototype.dispatch = function(value) {\n var handlers = this.handlersForDispatch()\n for (var i = 0; i < handlers.length; i++)\n value = handlers[i].f(value)\n return value\n}\n\nfunction StoppableSubscription() {\n Subscription.call(this)\n}\nexports.StoppableSubscription = StoppableSubscription\n\nStoppableSubscription.prototype = new Subscription\n\nStoppableSubscription.prototype.dispatch = function() {\n var handlers = this.handlersForDispatch()\n for (var i = 0; i < handlers.length; i++) {\n var result = handlers[i].f.apply(null, arguments)\n if (result) return result\n }\n}\n\nfunction DOMSubscription() {\n Subscription.call(this)\n}\nexports.DOMSubscription = DOMSubscription\n\nDOMSubscription.prototype = new Subscription\n\nDOMSubscription.prototype.dispatch = function(event) {\n var handlers = this.handlersForDispatch()\n for (var i = 0; i < handlers.length; i++)\n if (handlers[i].f(event) || event.defaultPrevented) return true\n return false\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ponyfill = require('./ponyfill.js');\n\nvar _ponyfill2 = _interopRequireDefault(_ponyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar root; /* global window */\n\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = (0, _ponyfill2['default'])(root);\nexports['default'] = result;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports['default'] = symbolObservablePonyfill;\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar _Symbol = root.Symbol;\n\n\tif (typeof _Symbol === 'function') {\n\t\tif (_Symbol.observable) {\n\t\t\tresult = _Symbol.observable;\n\t\t} else {\n\t\t\tresult = _Symbol('observable');\n\t\t\t_Symbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};","var nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 229: \"q\"\n}\nvar shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \";\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\",\n 229: \"Q\"\n}\n\nvar chrome = typeof navigator != \"undefined\" && /Chrome\\/(\\d+)/.exec(navigator.userAgent)\nvar safari = typeof navigator != \"undefined\" && /Apple Computer/.test(navigator.vendor)\nvar gecko = typeof navigator != \"undefined\" && /Gecko\\/\\d+/.test(navigator.userAgent)\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar brokenModifierNames = chrome && (mac || +chrome[1] < 57) || gecko && mac\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nfunction keyName(event) {\n // Don't trust event.key in Chrome when there are modifiers until\n // they fix https://bugs.chromium.org/p/chromium/issues/detail?id=633838\n var ignoreKey = brokenModifierNames && (event.ctrlKey || event.altKey || event.metaKey) ||\n safari && event.shiftKey && event.key && event.key.length == 1\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n\nmodule.exports = keyName\nkeyName.base = base\nkeyName.shift = shift\n","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nfunction pollDeferred(process, complete, timeGap, startTimeGap) {\n\treturn new Promise((resolve, reject) => {\n\t\tfunction iterate() {\n\t\t\tprocess().then((val) => {\n\t\t\t\ttry {\n\t\t\t\t\tif (complete(val))\n\t\t\t\t\t\tresolve(val);\n\t\t\t\t\telse\n\t\t\t\t\t\tsetTimeout(iterate, timeGap);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treject(e);\n\t\t\t\t}\n\t\t\t}, err => reject(err));\n\t\t}\n\t\tsetTimeout(iterate, startTimeGap || 0);\n\t});\n}\n\nfunction parametrizeUrl(url, params) {\n\treturn url.replace(/:(\\w+)/g, (_, val) => params[val]);\n}\n\nfunction api(base, defaultOptions) {\n\tconst baseUrl = !base || /\\/$/.test(base) ? base : base + '/';\n\n\tconst info = request('GET', 'info').then(res => ({\n\t\tindigoVersion: res['indigo_version'],\n\t\timagoVersions: res['imago_versions']\n\t})).catch(() => {\n\t\t//throw Error('Server is not compatible');\n\t});\n\n\tfunction request(method, url, data, headers) {\n\t\treturn Promise.resolve({\n\t\t\tindigo_version:1,\n\t\t\timago_versions:2\n\t\t});\n\t\t// if (data && method === 'GET')\n\t\t// \turl = parametrizeUrl(url, data);\n\t\t// return fetch(baseUrl + url, {\n\t\t// \tmethod,\n\t\t// \theaders: Object.assign({\n\t\t// \t\tAccept: 'application/json'\n\t\t// \t}, headers),\n\t\t// \tbody: method !== 'GET' ? data : undefined,\n\t\t// \tcredentials: 'same-origin'\n\t\t// })\n\t\t// \t.then(response => response.json()\n\t\t// \t\t.then(res => (response.ok ? res : Promise.reject(res.error))))\n\t\t// \t.catch((err) => {\n\t\t// \t\tthrow Error(err);\n\t\t// \t});\n\t}\n\n\tfunction indigoCall(method, url, defaultData) {\n\t\treturn function (data, options) {\n\t\t\tconst body = Object.assign({}, defaultData, data);\n\t\t\tbody.options = Object.assign(body.options || {},\n\t\t\t\tdefaultOptions, options);\n\t\t\treturn info.then(() => request(method, url, JSON.stringify(body), {\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t}));\n\t\t};\n\t}\n\n\treturn Object.assign(info, {\n\t\tconvert: indigoCall('POST', 'indigo/convert'),\n\t\tlayout: indigoCall('POST', 'indigo/layout'),\n\t\tclean: indigoCall('POST', 'indigo/clean'),\n\t\taromatize: indigoCall('POST', 'indigo/aromatize'),\n\t\tdearomatize: indigoCall('POST', 'indigo/dearomatize'),\n\t\tcalculateCip: indigoCall('POST', 'indigo/calculate_cip'),\n\t\tautomap: indigoCall('POST', 'indigo/automap'),\n\t\tcheck: indigoCall('POST', 'indigo/check'),\n\t\tcalculate: indigoCall('POST', 'indigo/calculate'),\n\t\trecognize(blob, version) { // eslint-disable-line no-unused-vars\n\t\t\tconst parVersion = version ? `?version=${version}` : '';\n\t\t\tconst req = request('POST', `imago/uploads${parVersion}`, blob, {\n\t\t\t\t'Content-Type': blob.type || 'application/octet-stream'\n\t\t\t});\n\t\t\tconst status = request.bind(null, 'GET', 'imago/uploads/:id');\n\t\t\treturn req\n\t\t\t\t.then(data => pollDeferred(\n\t\t\t\t\tstatus.bind(null, { id: data.upload_id }),\n\t\t\t\t\t(res) => {\n\t\t\t\t\t\tif (res.state === 'FAILURE') throw res;\n\t\t\t\t\t\treturn res.state === 'SUCCESS';\n\t\t\t\t\t}, 500, 300\n\t\t\t\t))\n\t\t\t\t.then(res => ({ struct: res.metadata.mol_str }));\n\t\t}\n\t});\n}\n\nexport default api;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nconst colors = {\n\t// [ Standard (for sketching applications) atom colors, Old Ketcher colors ]\n\tH: ['#000000', '#000000'],\n\tHe: ['#89a1a1', '#d9ffff'], // #849b9b\n\tLi: ['#bd77ed', '#cc80ff'], // #c87efa\n\tBe: ['#8fbc00', '#c2ff00'], // #82ab00\n\tB: ['#c18989', '#ffb5b5'], // #c38a8a\n\tC: ['#000000', '#000000'],\n\tN: ['#304ff7', '#304ff7'],\n\tO: ['#ff0d0d', '#ff0d0d'],\n\tF: ['#78bc42', '#8fe04f'], // #6dab3c\n\tNe: ['#80a2af', '#b3e3f5'], // #7b9ca8\n\tNa: ['#ab5cf2', '#ab5cf2'],\n\tMg: ['#6fcd00', '#8aff00'], // #61b400\n\tAl: ['#a99393', '#bfa6a6'], // #a79191\n\tSi: ['#b29478', '#f0c7a1'], // #b09276\n\tP: ['#ff8000', '#ff8000'],\n\tS: ['#c99a19', '#d9a61a'], // #c39517\n\tCl: ['#1fd01f', '#1fd01f'], // #1dc51d\n\tAr: ['#69acba', '#80d1e3'], // #63a2b0\n\tK: ['#8f40d4', '#8f40d4'],\n\tCa: ['#38e900', '#3dff00'], // #2fc300\n\tSc: ['#999999', '#e6e6e6'], // #969696\n\tTi: ['#979a9e', '#bfc2c7'], // #94969a\n\tV: ['#99999e', '#a6a6ab'], // #96969a\n\tCr: ['#8a99c7', '#8a99c7'], // #8796c3\n\tMn: ['#9c7ac7', '#9c7ac7'],\n\tFe: ['#e06633', '#e06633'],\n\tCo: ['#d37e8e', '#f08fa1'], // #db8293\n\tNi: ['#4ece4e', '#4fd14f'], // #45b645\n\tCu: ['#c78033', '#c78033'],\n\tZn: ['#7d80b0', '#7d80b0'],\n\tGa: ['#bc8b8b', '#c28f8f'], // #bd8c8c\n\tGe: ['#668f8f', '#668f8f'],\n\tAs: ['#b87ddd', '#bd80e3'], // #bd80e3\n\tSe: ['#e59100', '#ffa100'], // #e28f00\n\tBr: ['#a62929', '#a62929'],\n\tKr: ['#59b1c9', '#5cb8d1'], // #53a6bc\n\tRb: ['#702eb0', '#702eb0'],\n\tSr: ['#00ff00', '#00ff00'], // #00d000\n\tY: ['#66afaf', '#94ffff'], // #5fa4a4\n\tZr: ['#71abab', '#94e0e0'], // #6ba2a2\n\tNb: ['#67aeb4', '#73c2c9'], // #61a4a9\n\tMo: ['#54b5b5', '#54b5b5'], // #4ea9a9\n\tTc: ['#3b9e9e', '#3b9e9e'],\n\tRu: ['#248f8f', '#248f8f'],\n\tRh: ['#0a7d8c', '#0a7d8c'],\n\tPd: ['#006985', '#006985'],\n\tAg: ['#9a9a9a', '#bfbfbf'], // #969696\n\tCd: ['#b29764', '#ffd98f'], // #ae9462\n\tIn: ['#a67573', '#a67573'],\n\tSn: ['#668080', '#668080'],\n\tSb: ['#9e63b5', '#9e63b5'],\n\tTe: ['#d47a00', '#d47a00'],\n\tI: ['#940094', '#940094'],\n\tXe: ['#429eb0', '#429eb0'],\n\tCs: ['#57178f', '#57178f'],\n\tBa: ['#00c900', '#00c900'],\n\tLa: ['#5caed1', '#70d4ff'], // #57a4c5\n\tCe: ['#9d9d7b', '#ffffc7'], // #989877\n\tPr: ['#8ca581', '#d9ffc7'], // #869d7b\n\tNd: ['#84a984', '#c7ffc7'], // #7da07d\n\tPm: ['#71b18a', '#a3ffc7'], // #69a581\n\tSm: ['#66b68e', '#8fffc7'], // #5ea883\n\tEu: ['#4ac298', '#61ffc7'], // #43b089\n\tGd: ['#37cb9e', '#45ffc7'], // #31b48d\n\tTb: ['#28d1a4', '#30ffc7'], // #23b890\n\tDy: ['#1bd7a8', '#1fffc7'], // #17bb92\n\tHo: ['#00e98f', '#00ff9c'], // #00c578\n\tEr: ['#00e675', '#00e675'], // #00c765\n\tTm: ['#00d452', '#00d452'], // #00c94e\n\tYb: ['#00bf38', '#00bf38'],\n\tLu: ['#00ab24', '#00ab24'],\n\tHf: ['#47b3ec', '#4dc2ff'], // #42a8dc\n\tTa: ['#4da6ff', '#4da6ff'], // #4ba2f9\n\tW: ['#2194d6', '#2194d6'],\n\tRe: ['#267dab', '#267dab'],\n\tOs: ['#266696', '#266696'],\n\tIr: ['#175487', '#175487'],\n\tPt: ['#9898a3', '#d1d1e0'], // #9595a0\n\tAu: ['#c19e1c', '#ffd124'], // #b9981a\n\tHg: ['#9797ac', '#b8b8d1'], // #9595a9\n\tTl: ['#a6544d', '#a6544d'],\n\tPb: ['#575961', '#575961'],\n\tBi: ['#9e4fb5', '#9e4fb5'],\n\tPo: ['#ab5c00', '#ab5c00'],\n\tAt: ['#754f45', '#754f45'],\n\tRn: ['#428296', '#428296'],\n\tFr: ['#420066', '#420066'],\n\tRa: ['#007d00', '#007d00'],\n\tAc: ['#6aa2ec', '#70abfa'], // #669ce4\n\tTh: ['#00baff', '#00baff'], // #00b8fc\n\tPa: ['#00a1ff', '#00a1ff'],\n\tU: ['#008fff', '#008fff'],\n\tNp: ['#0080ff', '#0080ff'],\n\tPu: ['#006bff', '#006bff'],\n\tAm: ['#545cf2', '#545cf2'],\n\tCm: ['#785ce3', '#785ce3'],\n\tBk: ['#8a4fe3', '#8a4fe3'],\n\tCf: ['#a136d4', '#a136d4'],\n\tEs: ['#b31fd4', '#b31fd4'],\n\t// Need to fix colors for the elements below (c)\n\tFm: ['#000000', '#000000'],\n\tMd: ['#000000', '#000000'],\n\tNo: ['#000000', '#000000'],\n\tLr: ['#000000', '#000000'],\n\tRf: ['#47b3ec', '#4dc2ff'],\n\tDb: ['#4da6ff', '#4da6ff'],\n\tSg: ['#2194d6', '#2194d6'],\n\tBh: ['#267dab', '#267dab'],\n\tHs: ['#266696', '#266696'],\n\tMt: ['#175487', '#175487'],\n\tDs: ['#9898a3', '#d1d1e0'],\n\tRg: ['#c19e1c', '#ffd124'],\n\tCn: ['#9797ac', '#b8b8d1'],\n\tNh: ['#000000', '#000000'],\n\tFl: ['#000000', '#000000'],\n\tMc: ['#000000', '#000000'],\n\tLv: ['#000000', '#000000'],\n\tTs: ['#000000', '#000000'],\n\tOg: ['#000000', '#000000']\n};\n\nexport const sketchingColors = Object.keys(colors).reduce((res, item) => {\n\tres[item] = colors[item][0];\n\treturn res;\n}, {});\n\nexport const oldColors = Object.keys(colors).reduce((res, item) => {\n\tres[item] = colors[item][1];\n\treturn res;\n}, {});\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nconst element = [\n\tnull,\n\t{\n\t\tlabel: 'H', // 1\n\t\tperiod: 1,\n\t\tgroup: 1,\n\t\ttitle: 'Hydrogen',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'diatomic',\n\t\tatomic_mass: 1.00794\n\t},\n\t{\n\t\tlabel: 'He', // 2\n\t\tperiod: 1,\n\t\tgroup: 8,\n\t\ttitle: 'Helium',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'noble',\n\t\tatomic_mass: 4.0026022\n\t},\n\t{\n\t\tlabel: 'Li', // 3\n\t\tperiod: 2,\n\t\tgroup: 1,\n\t\ttitle: 'Lithium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkali',\n\t\tatomic_mass: 6.94\n\t},\n\t{\n\t\tlabel: 'Be', // 4\n\t\tperiod: 2,\n\t\tgroup: 2,\n\t\ttitle: 'Beryllium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkaline-earth',\n\t\tatomic_mass: 9.01218315\n\t},\n\t{\n\t\tlabel: 'B', // 5\n\t\tperiod: 2,\n\t\tgroup: 3,\n\t\ttitle: 'Boron',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'metalloid',\n\t\tatomic_mass: 10.81\n\t},\n\t{\n\t\tlabel: 'C', // 6\n\t\tperiod: 2,\n\t\tgroup: 4,\n\t\ttitle: 'Carbon',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'polyatomic',\n\t\tatomic_mass: 12.011\n\t},\n\t{\n\t\tlabel: 'N', // 7\n\t\tperiod: 2,\n\t\tgroup: 5,\n\t\ttitle: 'Nitrogen',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'diatomic',\n\t\tatomic_mass: 14.007\n\t},\n\t{\n\t\tlabel: 'O', // 8\n\t\tperiod: 2,\n\t\tgroup: 6,\n\t\tleftH: true,\n\t\ttitle: 'Oxygen',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'diatomic',\n\t\tatomic_mass: 15.999\n\t},\n\t{\n\t\tlabel: 'F', // 9\n\t\tperiod: 2,\n\t\tgroup: 7,\n\t\tleftH: true,\n\t\ttitle: 'Fluorine',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'diatomic',\n\t\tatomic_mass: 18.9984031636\n\t},\n\t{\n\t\tlabel: 'Ne', // 10\n\t\tperiod: 2,\n\t\tgroup: 8,\n\t\ttitle: 'Neon',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'noble',\n\t\tatomic_mass: 20.17976\n\t},\n\t{\n\t\tlabel: 'Na', // 11\n\t\tperiod: 3,\n\t\tgroup: 1,\n\t\ttitle: 'Sodium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkali',\n\t\tatomic_mass: 22.989769282\n\t},\n\t{\n\t\tlabel: 'Mg', // 12\n\t\tperiod: 3,\n\t\tgroup: 2,\n\t\ttitle: 'Magnesium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkaline-earth',\n\t\tatomic_mass: 24.305\n\t},\n\t{\n\t\tlabel: 'Al', // 13\n\t\tperiod: 3,\n\t\tgroup: 3,\n\t\ttitle: 'Aluminium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 26.98153857\n\t},\n\t{\n\t\tlabel: 'Si', // 14\n\t\tperiod: 3,\n\t\tgroup: 4,\n\t\ttitle: 'Silicon',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'metalloid',\n\t\tatomic_mass: 28.085\n\t},\n\t{\n\t\tlabel: 'P', // 15\n\t\tperiod: 3,\n\t\tgroup: 5,\n\t\ttitle: 'Phosphorus',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'polyatomic',\n\t\tatomic_mass: 30.9737619985\n\t},\n\t{\n\t\tlabel: 'S', // 16\n\t\tperiod: 3,\n\t\tgroup: 6,\n\t\tleftH: true,\n\t\ttitle: 'Sulfur',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'polyatomic',\n\t\tatomic_mass: 32.06\n\t},\n\t{\n\t\tlabel: 'Cl', // 17\n\t\tperiod: 3,\n\t\tgroup: 7,\n\t\tleftH: true,\n\t\ttitle: 'Chlorine',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'diatomic',\n\t\tatomic_mass: 35.45\n\t},\n\t{\n\t\tlabel: 'Ar', // 18\n\t\tperiod: 3,\n\t\tgroup: 8,\n\t\ttitle: 'Argon',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'noble',\n\t\tatomic_mass: 39.9481\n\t},\n\t{\n\t\tlabel: 'K', // 19\n\t\tperiod: 4,\n\t\tgroup: 1,\n\t\ttitle: 'Potassium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkali',\n\t\tatomic_mass: 39.09831\n\t},\n\t{\n\t\tlabel: 'Ca', // 20\n\t\tperiod: 4,\n\t\tgroup: 2,\n\t\ttitle: 'Calcium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkaline-earth',\n\t\tatomic_mass: 40.0784\n\t},\n\t{\n\t\tlabel: 'Sc', // 21\n\t\tperiod: 4,\n\t\tgroup: 3,\n\t\ttitle: 'Scandium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 44.9559085\n\t},\n\t{\n\t\tlabel: 'Ti', // 22\n\t\tperiod: 4,\n\t\tgroup: 4,\n\t\ttitle: 'Titanium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 47.8671\n\t},\n\t{\n\t\tlabel: 'V', // 23\n\t\tperiod: 4,\n\t\tgroup: 5,\n\t\ttitle: 'Vanadium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 50.94151\n\t},\n\t{\n\t\tlabel: 'Cr', // 24\n\t\tperiod: 4,\n\t\tgroup: 6,\n\t\ttitle: 'Chromium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 51.99616\n\t},\n\t{\n\t\tlabel: 'Mn', // 25\n\t\tperiod: 4,\n\t\tgroup: 7,\n\t\ttitle: 'Manganese',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 54.9380443\n\t},\n\t{\n\t\tlabel: 'Fe', // 26\n\t\tperiod: 4,\n\t\tgroup: 8,\n\t\ttitle: 'Iron',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 55.8452\n\t},\n\t{\n\t\tlabel: 'Co', // 27\n\t\tperiod: 4,\n\t\tgroup: 8,\n\t\ttitle: 'Cobalt',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 58.9331944\n\t},\n\t{\n\t\tlabel: 'Ni', // 28\n\t\tperiod: 4,\n\t\tgroup: 8,\n\t\ttitle: 'Nickel',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 58.69344\n\t},\n\t{\n\t\tlabel: 'Cu', // 29\n\t\tperiod: 4,\n\t\tgroup: 1,\n\t\ttitle: 'Copper',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 63.5463\n\t},\n\t{\n\t\tlabel: 'Zn', // 30\n\t\tperiod: 4,\n\t\tgroup: 2,\n\t\ttitle: 'Zinc',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 65.382\n\t},\n\t{\n\t\tlabel: 'Ga', // 31\n\t\tperiod: 4,\n\t\tgroup: 3,\n\t\ttitle: 'Gallium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 69.7231\n\t},\n\t{\n\t\tlabel: 'Ge', // 32\n\t\tperiod: 4,\n\t\tgroup: 4,\n\t\ttitle: 'Germanium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'metalloid',\n\t\tatomic_mass: 72.6308\n\t},\n\t{\n\t\tlabel: 'As', // 33\n\t\tperiod: 4,\n\t\tgroup: 5,\n\t\ttitle: 'Arsenic',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'metalloid',\n\t\tatomic_mass: 74.9215956\n\t},\n\t{\n\t\tlabel: 'Se', // 34\n\t\tperiod: 4,\n\t\tgroup: 6,\n\t\tleftH: true,\n\t\ttitle: 'Selenium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'polyatomic',\n\t\tatomic_mass: 78.9718\n\t},\n\t{\n\t\tlabel: 'Br', // 35\n\t\tperiod: 4,\n\t\tgroup: 7,\n\t\tleftH: true,\n\t\ttitle: 'Bromine',\n\t\tstate: 'liquid',\n\t\torigin: 'primordial',\n\t\ttype: 'diatomic',\n\t\tatomic_mass: 79.904\n\t},\n\t{\n\t\tlabel: 'Kr', // 36\n\t\tperiod: 4,\n\t\tgroup: 8,\n\t\ttitle: 'Krypton',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'noble',\n\t\tatomic_mass: 83.7982\n\t},\n\t{\n\t\tlabel: 'Rb', // 37\n\t\tperiod: 5,\n\t\tgroup: 1,\n\t\ttitle: 'Rubidium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkali',\n\t\tatomic_mass: 85.46783\n\t},\n\t{\n\t\tlabel: 'Sr', // 38\n\t\tperiod: 5,\n\t\tgroup: 2,\n\t\ttitle: 'Strontium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkaline-earth',\n\t\tatomic_mass: 87.621\n\t},\n\t{\n\t\tlabel: 'Y', // 39\n\t\tperiod: 5,\n\t\tgroup: 3,\n\t\ttitle: 'Yttrium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 88.905842\n\t},\n\t{\n\t\tlabel: 'Zr', // 40\n\t\tperiod: 5,\n\t\tgroup: 4,\n\t\ttitle: 'Zirconium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 91.2242\n\t},\n\t{\n\t\tlabel: 'Nb', // 41\n\t\tperiod: 5,\n\t\tgroup: 5,\n\t\ttitle: 'Niobium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 92.906372\n\t},\n\t{\n\t\tlabel: 'Mo', // 42\n\t\tperiod: 5,\n\t\tgroup: 6,\n\t\ttitle: 'Molybdenum',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 95.951\n\t},\n\t{\n\t\tlabel: 'Tc', // 43\n\t\tperiod: 5,\n\t\tgroup: 7,\n\t\ttitle: 'Technetium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'transition',\n\t\tatomic_mass: 98\n\t},\n\t{\n\t\tlabel: 'Ru', // 44\n\t\tperiod: 5,\n\t\tgroup: 8,\n\t\ttitle: 'Ruthenium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 101.072\n\t},\n\t{\n\t\tlabel: 'Rh', // 45\n\t\tperiod: 5,\n\t\tgroup: 8,\n\t\ttitle: 'Rhodium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 102.905502\n\t},\n\t{\n\t\tlabel: 'Pd', // 46\n\t\tperiod: 5,\n\t\tgroup: 8,\n\t\ttitle: 'Palladium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 106.421\n\t},\n\t{\n\t\tlabel: 'Ag', // 47\n\t\tperiod: 5,\n\t\tgroup: 1,\n\t\ttitle: 'Silver',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 107.86822\n\t},\n\t{\n\t\tlabel: 'Cd', // 48\n\t\tperiod: 5,\n\t\tgroup: 2,\n\t\ttitle: 'Cadmium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 112.4144\n\t},\n\t{\n\t\tlabel: 'In', // 49\n\t\tperiod: 5,\n\t\tgroup: 3,\n\t\ttitle: 'Indium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 114.8181\n\t},\n\t{\n\t\tlabel: 'Sn', // 50\n\t\tperiod: 5,\n\t\tgroup: 4,\n\t\ttitle: 'Tin',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 118.7107\n\t},\n\t{\n\t\tlabel: 'Sb', // 51\n\t\tperiod: 5,\n\t\tgroup: 5,\n\t\ttitle: 'Antimony',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'metalloid',\n\t\tatomic_mass: 121.7601\n\t},\n\t{\n\t\tlabel: 'Te', // 52\n\t\tperiod: 5,\n\t\tgroup: 6,\n\t\ttitle: 'Tellurium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'metalloid',\n\t\tatomic_mass: 127.603\n\t},\n\t{\n\t\tlabel: 'I', // 53\n\t\tperiod: 5,\n\t\tgroup: 7,\n\t\tleftH: true,\n\t\ttitle: 'Iodine',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'diatomic',\n\t\tatomic_mass: 126.904473\n\t},\n\t{\n\t\tlabel: 'Xe', // 54\n\t\tperiod: 5,\n\t\tgroup: 8,\n\t\ttitle: 'Xenon',\n\t\tstate: 'gas',\n\t\torigin: 'primordial',\n\t\ttype: 'noble',\n\t\tatomic_mass: 131.2936\n\t},\n\t{\n\t\tlabel: 'Cs', // 55\n\t\tperiod: 6,\n\t\tgroup: 1,\n\t\ttitle: 'Caesium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkali',\n\t\tatomic_mass: 132.905451966\n\t},\n\t{\n\t\tlabel: 'Ba', // 56\n\t\tperiod: 6,\n\t\tgroup: 2,\n\t\ttitle: 'Barium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'alkaline-earth',\n\t\tatomic_mass: 137.3277\n\t},\n\t{\n\t\tlabel: 'La', // 57\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Lanthanum',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 138.905477\n\t},\n\t{\n\t\tlabel: 'Ce', // 58\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Cerium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 140.1161\n\t},\n\t{\n\t\tlabel: 'Pr', // 59\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Praseodymium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 140.907662\n\t},\n\t{\n\t\tlabel: 'Nd', // 60\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Neodymium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 144.2423\n\t},\n\t{\n\t\tlabel: 'Pm', // 61\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Promethium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 145\n\t},\n\t{\n\t\tlabel: 'Sm', // 62\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Samarium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 150.362\n\t},\n\t{\n\t\tlabel: 'Eu', // 63\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Europium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 151.9641\n\t},\n\t{\n\t\tlabel: 'Gd', // 64\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Gadolinium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 157.253\n\t},\n\t{\n\t\tlabel: 'Tb', // 65\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Terbium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 158.925352\n\t},\n\t{\n\t\tlabel: 'Dy', // 66\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Dysprosium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 162.5001\n\t},\n\t{\n\t\tlabel: 'Ho', // 67\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Holmium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 164.930332\n\t},\n\t{\n\t\tlabel: 'Er', // 68\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Erbium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 167.2593\n\t},\n\t{\n\t\tlabel: 'Tm', // 69\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Thulium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 168.934222\n\t},\n\t{\n\t\tlabel: 'Yb', // 70\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Ytterbium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 173.0451\n\t},\n\t{\n\t\tlabel: 'Lu', // 71\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Lutetium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'lanthanide',\n\t\tatomic_mass: 174.96681\n\t},\n\t{\n\t\tlabel: 'Hf', // 72\n\t\tperiod: 6,\n\t\tgroup: 4,\n\t\ttitle: 'Hafnium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 178.492\n\t},\n\t{\n\t\tlabel: 'Ta', // 73\n\t\tperiod: 6,\n\t\tgroup: 5,\n\t\ttitle: 'Tantalum',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 180.947882\n\t},\n\t{\n\t\tlabel: 'W', // 74\n\t\tperiod: 6,\n\t\tgroup: 6,\n\t\ttitle: 'Tungsten',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 183.841\n\t},\n\t{\n\t\tlabel: 'Re', // 75\n\t\tperiod: 6,\n\t\tgroup: 7,\n\t\ttitle: 'Rhenium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 186.2071\n\t},\n\t{\n\t\tlabel: 'Os', // 76\n\t\tperiod: 6,\n\t\tgroup: 8,\n\t\ttitle: 'Osmium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 190.233\n\t},\n\t{\n\t\tlabel: 'Ir', // 77\n\t\tperiod: 6,\n\t\tgroup: 8,\n\t\ttitle: 'Iridium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 192.2173\n\t},\n\t{\n\t\tlabel: 'Pt', // 78\n\t\tperiod: 6,\n\t\tgroup: 8,\n\t\ttitle: 'Platinum',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 195.0849\n\t},\n\t{\n\t\tlabel: 'Au', // 79\n\t\tperiod: 6,\n\t\tgroup: 1,\n\t\ttitle: 'Gold',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 196.9665695\n\t},\n\t{\n\t\tlabel: 'Hg', // 80\n\t\tperiod: 6,\n\t\tgroup: 2,\n\t\ttitle: 'Mercury',\n\t\tstate: 'liquid',\n\t\torigin: 'primordial',\n\t\ttype: 'transition',\n\t\tatomic_mass: 200.5923\n\t},\n\t{\n\t\tlabel: 'Tl', // 81\n\t\tperiod: 6,\n\t\tgroup: 3,\n\t\ttitle: 'Thallium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 204.38\n\t},\n\t{\n\t\tlabel: 'Pb', // 82\n\t\tperiod: 6,\n\t\tgroup: 4,\n\t\ttitle: 'Lead',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 207.21\n\t},\n\t{\n\t\tlabel: 'Bi', // 83\n\t\tperiod: 6,\n\t\tgroup: 5,\n\t\ttitle: 'Bismuth',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 208.980401\n\t},\n\t{\n\t\tlabel: 'Po', // 84\n\t\tperiod: 6,\n\t\tgroup: 6,\n\t\ttitle: 'Polonium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 209\n\t},\n\t{\n\t\tlabel: 'At', // 85\n\t\tperiod: 6,\n\t\tgroup: 7,\n\t\ttitle: 'Astatine',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'metalloid',\n\t\tatomic_mass: 210\n\t},\n\t{\n\t\tlabel: 'Rn', // 86\n\t\tperiod: 6,\n\t\tgroup: 8,\n\t\ttitle: 'Radon',\n\t\tstate: 'gas',\n\t\torigin: 'decay',\n\t\ttype: 'noble',\n\t\tatomic_mass: 222\n\t},\n\t{\n\t\tlabel: 'Fr', // 87\n\t\tperiod: 7,\n\t\tgroup: 1,\n\t\ttitle: 'Francium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'alkali',\n\t\tatomic_mass: 223\n\t},\n\t{\n\t\tlabel: 'Ra', // 88\n\t\tperiod: 7,\n\t\tgroup: 2,\n\t\ttitle: 'Radium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'alkaline-earth',\n\t\tatomic_mass: 226\n\t},\n\t{\n\t\tlabel: 'Ac', // 89\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Actinium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 227\n\t},\n\t{\n\t\tlabel: 'Th', // 90\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Thorium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 232.03774\n\t},\n\t{\n\t\tlabel: 'Pa', // 91\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Protactinium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 231.035882\n\t},\n\t{\n\t\tlabel: 'U', // 92\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Uranium',\n\t\tstate: 'solid',\n\t\torigin: 'primordial',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 238.028913\n\t},\n\t{\n\t\tlabel: 'Np', // 93\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Neptunium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 237\n\t},\n\t{\n\t\tlabel: 'Pu', // 94\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Plutonium',\n\t\tstate: 'solid',\n\t\torigin: 'decay',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 244\n\t},\n\t{\n\t\tlabel: 'Am', // 95\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Americium',\n\t\tstate: 'solid',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 243\n\t},\n\t{\n\t\tlabel: 'Cm', // 96\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Curium',\n\t\tstate: 'solid',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 247\n\t},\n\t{\n\t\tlabel: 'Bk', // 97\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Berkelium',\n\t\tstate: 'solid',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 247\n\t},\n\t{\n\t\tlabel: 'Cf', // 98\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Californium',\n\t\tstate: 'solid',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 251\n\t},\n\t{\n\t\tlabel: 'Es', // 99\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Einsteinium',\n\t\tstate: 'solid',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 252\n\t},\n\t{\n\t\tlabel: 'Fm', // 100\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Fermium',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 257\n\t},\n\t{\n\t\tlabel: 'Md', // 101\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Mendelevium',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 258\n\t},\n\t{\n\t\tlabel: 'No', // 102\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Nobelium',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 259\n\t},\n\t{\n\t\tlabel: 'Lr', // 103\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Lawrencium',\n\t\torigin: 'synthetic',\n\t\ttype: 'actinide',\n\t\tatomic_mass: 266\n\t},\n\t{\n\t\tlabel: 'Rf', // 104\n\t\tperiod: 7,\n\t\tgroup: 4,\n\t\ttitle: 'Rutherfordium',\n\t\torigin: 'synthetic',\n\t\ttype: 'transition',\n\t\tatomic_mass: 267\n\t},\n\t{\n\t\tlabel: 'Db', // 105\n\t\tperiod: 7,\n\t\tgroup: 5,\n\t\ttitle: 'Dubnium',\n\t\torigin: 'synthetic',\n\t\ttype: 'transition',\n\t\tatomic_mass: 268\n\t},\n\t{\n\t\tlabel: 'Sg', // 106\n\t\tperiod: 7,\n\t\tgroup: 6,\n\t\ttitle: 'Seaborgium',\n\t\torigin: 'synthetic',\n\t\ttype: 'transition',\n\t\tatomic_mass: 269\n\t},\n\t{\n\t\tlabel: 'Bh', // 107\n\t\tperiod: 7,\n\t\tgroup: 7,\n\t\ttitle: 'Bohrium',\n\t\torigin: 'synthetic',\n\t\ttype: 'transition',\n\t\tatomic_mass: 270\n\t},\n\t{\n\t\tlabel: 'Hs', // 108\n\t\tperiod: 7,\n\t\tgroup: 8,\n\t\ttitle: 'Hassium',\n\t\torigin: 'synthetic',\n\t\ttype: 'transition',\n\t\tatomic_mass: 269\n\t},\n\t{\n\t\tlabel: 'Mt', // 109\n\t\tperiod: 7,\n\t\tgroup: 8,\n\t\ttitle: 'Meitnerium',\n\t\torigin: 'synthetic',\n\t\tatomic_mass: 278\n\t},\n\t{\n\t\tlabel: 'Ds', // 110\n\t\tperiod: 7,\n\t\tgroup: 8,\n\t\ttitle: 'Darmstadtium',\n\t\torigin: 'synthetic',\n\t\tatomic_mass: 281\n\t},\n\t{\n\t\tlabel: 'Rg', // 111\n\t\tperiod: 7,\n\t\tgroup: 1,\n\t\ttitle: 'Roentgenium',\n\t\torigin: 'synthetic',\n\t\tatomic_mass: 282\n\t},\n\t{\n\t\tlabel: 'Cn', // 112\n\t\tperiod: 7,\n\t\tgroup: 2,\n\t\ttitle: 'Copernicium',\n\t\torigin: 'synthetic',\n\t\ttype: 'transition',\n\t\tatomic_mass: 285\n\t},\n\t{\n\t\tlabel: 'Nh', // 113\n\t\tperiod: 7,\n\t\tgroup: 3,\n\t\ttitle: 'Nihonium',\n\t\torigin: 'synthetic',\n\t\tatomic_mass: 286\n\t},\n\t{\n\t\tlabel: 'Fl', // 114\n\t\tperiod: 7,\n\t\tgroup: 4,\n\t\ttitle: 'Flerovium',\n\t\torigin: 'synthetic',\n\t\ttype: 'post-transition',\n\t\tatomic_mass: 289\n\t},\n\t{\n\t\tlabel: 'Mc', // 115\n\t\tperiod: 7,\n\t\tgroup: 5,\n\t\ttitle: 'Moscovium',\n\t\torigin: 'synthetic',\n\t\tatomic_mass: 289\n\t},\n\t{\n\t\tlabel: 'Lv', // 116\n\t\tperiod: 7,\n\t\tgroup: 6,\n\t\ttitle: 'Livermorium',\n\t\torigin: 'synthetic',\n\t\tatomic_mass: 293\n\t},\n\t{\n\t\tlabel: 'Ts', // 117\n\t\tperiod: 7,\n\t\tgroup: 7,\n\t\ttitle: 'Tennessine',\n\t\torigin: 'synthetic',\n\t\tatomic_mass: 294\n\t},\n\t{\n\t\tlabel: 'Og', // 118\n\t\tperiod: 7,\n\t\tgroup: 8,\n\t\ttitle: 'Oganesson',\n\t\torigin: 'synthetic',\n\t\tatomic_mass: 294\n\t}\n];\n\nelement.map = element.reduce((res, el, index) => {\n\tif (el) res[el.label] = index;\n\treturn res;\n}, {});\n\nexport default element;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nconst generics = {\n\tatom: {\n\t\tany: {\n\t\t\tlabels: ['A', 'AH']\n\t\t},\n\t\t'no-carbon': {\n\t\t\tlabels: ['Q', 'QH']\n\t\t},\n\t\tmetal: {\n\t\t\tlabels: ['M', 'MH']\n\t\t},\n\t\thalogen: {\n\t\t\tlabels: ['X', 'XH']\n\t\t}\n\t},\n\tgroup: {\n\t\tlabels: ['G', 'GH', 'G*', 'GH*'],\n\t\tacyclic: {\n\t\t\tlabels: ['ACY', 'ACH'],\n\t\t\tcarbo: {\n\t\t\t\tlabels: ['ABC', 'ABH'],\n\t\t\t\talkynyl: {\n\t\t\t\t\tlabels: ['AYL', 'AYH']\n\t\t\t\t},\n\t\t\t\talkyl: {\n\t\t\t\t\tlabels: ['ALK', 'ALH']\n\t\t\t\t},\n\t\t\t\talkenyl: {\n\t\t\t\t\tlabels: ['AEL', 'AEH']\n\t\t\t\t}\n\t\t\t},\n\t\t\thetero: {\n\t\t\t\tlabels: ['AHC', 'AHH'],\n\t\t\t\talkoxy: {\n\t\t\t\t\tlabels: ['AOX', 'AOH']\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcyclic: {\n\t\t\tlabels: ['CYC', 'CYH'],\n\t\t\t'no-carbon': {\n\t\t\t\tlabels: ['CXX', 'CXH']\n\t\t\t},\n\t\t\tcarbo: {\n\t\t\t\tlabels: ['CBC', 'CBH'],\n\t\t\t\taryl: {\n\t\t\t\t\tlabels: ['ARY', 'ARH']\n\t\t\t\t},\n\t\t\t\tcycloalkyl: {\n\t\t\t\t\tlabels: ['CAL', 'CAH']\n\t\t\t\t},\n\t\t\t\tcycloalkenyl: {\n\t\t\t\t\tlabels: ['CEL', 'CEH']\n\t\t\t\t}\n\t\t\t},\n\t\t\thetero: {\n\t\t\t\tlabels: ['CHC', 'CHH'],\n\t\t\t\taryl: {\n\t\t\t\t\tlabels: ['HAR', 'HAH']\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tspecial: {\n\t\tlabels: ['H+', 'D', 'T', 'R', 'Pol']\n\t}\n};\n\nfunction mapify(tree, path, res) {\n\treturn Object.keys(tree).reduce((res, key) => {\n\t\tif (key === 'labels') {\n\t\t\treturn tree.labels.reduce((res, label) => {\n\t\t\t\tres[label] = path || true;\n\t\t\t\treturn res;\n\t\t\t}, res);\n\t\t}\n\t\treturn mapify(tree[key],\n\t\t\tpath ? path.concat(key) : [key], res);\n\t}, res || {});\n}\n\nfunction traverse(tree, path) {\n\treturn path.reduce((res, cur) => (res && res[cur]) || null, tree);\n}\n\ngenerics.map = mapify(generics);\ngenerics.map['*'] = generics.map['A']; // alias\ngenerics.get = function (path) {\n\treturn mapify(traverse(path));\n};\n\nexport default generics;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport v2000 from './v2000';\nimport v3000 from './v3000';\n\nimport Pile from '../../util/pile';\n\nimport { SGroup } from './../struct/index';\nimport utils from './utils';\n\nconst loadRGroupFragments = true; // TODO: set to load the fragments\n\n/* Parse Mol */\nfunction parseMol(/* string */ ctabLines) /* Struct */ {\n\t/* reader */\n\tif (ctabLines[0].search('\\\\$MDL') === 0) {\n\t\tconst struct = v2000.parseRg2000(ctabLines);\n\t\tstruct.name = ctabLines[3].trim();\n\t\treturn struct;\n\t}\n\tconst struct = parseCTab(ctabLines.slice(3));\n\tstruct.name = ctabLines[0].trim();\n\treturn struct;\n}\n\nfunction parseCTab(/* string */ ctabLines) /* Struct */ {\n\t/* reader */\n\tconst countsSplit = partitionLine(ctabLines[0], utils.fmtInfo.countsLinePartition);\n\tconst version = countsSplit[11].trim();\n\tctabLines = ctabLines.slice(1);\n\tif (version === 'V2000')\n\t\treturn v2000.parseCTabV2000(ctabLines, countsSplit);\n\telse if (version === 'V3000')\n\t\treturn v3000.parseCTabV3000(ctabLines, !loadRGroupFragments);\n\telse\n\t\tthrow new Error('Molfile version unknown: ' + version); // eslint-disable-line no-else-return\n}\n\n/* Parse Rxn */\nfunction parseRxn(/* string[] */ ctabLines, shouldReactionRelayout) /* Struct */ {\n\t/* reader */\n\tconst split = ctabLines[0].trim().split(' ');\n\tif (split.length > 1 && split[1] === 'V3000')\n\t\treturn v3000.parseRxn3000(ctabLines, shouldReactionRelayout);\n\n\tconst struct = v2000.parseRxn2000(ctabLines, shouldReactionRelayout);\n\tstruct.name = ctabLines[1].trim();\n\treturn struct;\n}\n\n/* Prepare For Saving */\nconst prepareForSaving = {\n\tMUL: SGroup.prepareMulForSaving,\n\tSRU: prepareSruForSaving,\n\tSUP: prepareSupForSaving,\n\tDAT: prepareDatForSaving,\n\tGEN: prepareGenForSaving\n};\n\nfunction prepareSruForSaving(sgroup, mol) {\n\tconst xBonds = [];\n\tmol.bonds.forEach((bond, bid) => {\n\t\tconst a1 = mol.atoms.get(bond.begin);\n\t\tconst a2 = mol.atoms.get(bond.end);\n\t\t/* eslint-disable no-mixed-operators*/\n\t\tif (a1.sgs.has(sgroup.id) && !a2.sgs.has(sgroup.id) ||\n\t\t\ta2.sgs.has(sgroup.id) && !a1.sgs.has(sgroup.id))\n\t\t/* eslint-enable no-mixed-operators*/\n\t\t\txBonds.push(bid);\n\t}, sgroup);\n\tif (xBonds.length !== 0 && xBonds.length !== 2) {\n\t\tthrow { // eslint-disable-line no-throw-literal\n\t\t\tid: sgroup.id,\n\t\t\t'error-type': 'cross-bond-number',\n\t\t\tmessage: 'Unsupported cross-bonds number'\n\t\t};\n\t}\n\tsgroup.bonds = xBonds;\n}\n\nfunction prepareSupForSaving(sgroup, mol) {\n\t// This code is also used for GroupSru and should be moved into a separate common method\n\t// It seems that such code should be used for any sgroup by this this should be checked\n\tconst xBonds = [];\n\tmol.bonds.forEach((bond, bid) => {\n\t\tconst a1 = mol.atoms.get(bond.begin);\n\t\tconst a2 = mol.atoms.get(bond.end);\n\t\t/* eslint-disable no-mixed-operators*/\n\t\tif (a1.sgs.has(sgroup.id) && !a2.sgs.has(sgroup.id) ||\n\t\t\ta2.sgs.has(sgroup.id) && !a1.sgs.has(sgroup.id))\n\t\t/* eslint-enable no-mixed-operators*/\n\t\t\txBonds.push(bid);\n\t}, sgroup);\n\tsgroup.bonds = xBonds;\n}\n\nfunction prepareGenForSaving(sgroup, mol) { // eslint-disable-line no-unused-vars\n}\n\nfunction prepareDatForSaving(sgroup, mol) {\n\tsgroup.atoms = SGroup.getAtoms(mol, sgroup);\n}\n\n/* Save To Molfile */\nconst saveToMolfile = {\n\tMUL: saveMulToMolfile,\n\tSRU: saveSruToMolfile,\n\tSUP: saveSupToMolfile,\n\tDAT: saveDatToMolfile,\n\tGEN: saveGenToMolfile\n};\n\nfunction saveMulToMolfile(sgroup, mol, sgMap, atomMap, bondMap) { // eslint-disable-line max-params\n\tconst idstr = (sgMap[sgroup.id] + '').padStart(3);\n\n\tlet lines = [];\n\tlines = lines.concat(makeAtomBondLines('SAL', idstr, Array.from(sgroup.atomSet.values()), atomMap)); // TODO: check atomSet\n\tlines = lines.concat(makeAtomBondLines('SPA', idstr, Array.from(sgroup.parentAtomSet.values()), atomMap));\n\tlines = lines.concat(makeAtomBondLines('SBL', idstr, sgroup.bonds, bondMap));\n\tconst smtLine = 'M SMT ' + idstr + ' ' + sgroup.data.mul;\n\tlines.push(smtLine);\n\tlines = lines.concat(bracketsToMolfile(mol, sgroup, idstr));\n\treturn lines.join('\\n');\n}\n\nfunction saveSruToMolfile(sgroup, mol, sgMap, atomMap, bondMap) { // eslint-disable-line max-params\n\tconst idstr = (sgMap[sgroup.id] + '').padStart(3);\n\n\tlet lines = [];\n\tlines = lines.concat(makeAtomBondLines('SAL', idstr, sgroup.atoms, atomMap));\n\tlines = lines.concat(makeAtomBondLines('SBL', idstr, sgroup.bonds, bondMap));\n\tlines = lines.concat(bracketsToMolfile(mol, sgroup, idstr));\n\treturn lines.join('\\n');\n}\n\nfunction saveSupToMolfile(sgroup, mol, sgMap, atomMap, bondMap) { // eslint-disable-line max-params\n\tconst idstr = (sgMap[sgroup.id] + '').padStart(3);\n\n\tlet lines = [];\n\tlines = lines.concat(makeAtomBondLines('SAL', idstr, sgroup.atoms, atomMap));\n\tlines = lines.concat(makeAtomBondLines('SBL', idstr, sgroup.bonds, bondMap));\n\tif (sgroup.data.name && sgroup.data.name !== '')\n\t\tlines.push('M SMT ' + idstr + ' ' + sgroup.data.name);\n\treturn lines.join('\\n');\n}\n\nfunction saveDatToMolfile(sgroup, mol, sgMap, atomMap) {\n\tconst idstr = (sgMap[sgroup.id] + '').padStart(3);\n\n\tconst data = sgroup.data;\n\tlet pp = sgroup.pp;\n\tif (!data.absolute)\n\t\tpp = pp.sub(SGroup.getMassCentre(mol, sgroup.atoms));\n\tlet lines = [];\n\tlines = lines.concat(makeAtomBondLines('SAL', idstr, sgroup.atoms, atomMap));\n\tlet sdtLine = 'M SDT ' + idstr + ' ' +\n\t\t(data.fieldName || '').padEnd(30) +\n\t\t(data.fieldType || '').padStart(2) +\n\t\t(data.units || '').padEnd(20) +\n\t\t(data.query || '').padStart(2);\n\n\tif (data.queryOp) // see gitlab #184\n\t\tsdtLine += data.queryOp.padEnd(80 - 65);\n\n\tlines.push(sdtLine);\n\tconst sddLine = 'M SDD ' + idstr +\n\t\t' ' + utils.paddedNum(pp.x, 10, 4) + utils.paddedNum(-pp.y, 10, 4) +\n\t\t' ' + // ' eee'\n\t\t(data.attached ? 'A' : 'D') + // f\n\t\t(data.absolute ? 'A' : 'R') + // g\n\t\t(data.showUnits ? 'U' : ' ') + // h\n\t\t' ' + // i\n\t\t(data.nCharnCharsToDisplay >= 0 ? utils.paddedNum(data.nCharnCharsToDisplay, 3) : 'ALL') + // jjj\n\t\t' 1 ' + // 'kkk ll '\n\t\t(data.tagChar || ' ') + // m\n\t\t' ' + utils.paddedNum(data.daspPos, 1) + // n\n\t\t' '; // oo\n\tlines.push(sddLine);\n\tconst val = normalizeNewlines(data.fieldValue).replace(/\\n*$/, '');\n\tconst charsPerLine = 69;\n\tval.split('\\n').forEach((chars) => {\n\t\twhile (chars.length > charsPerLine) {\n\t\t\tlines.push('M SCD ' + idstr + ' ' + chars.slice(0, charsPerLine));\n\t\t\tchars = chars.slice(charsPerLine);\n\t\t}\n\t\tlines.push('M SED ' + idstr + ' ' + chars);\n\t});\n\treturn lines.join('\\n');\n}\n\nfunction saveGenToMolfile(sgroup, mol, sgMap, atomMap, bondMap) { // eslint-disable-line max-params\n\tconst idstr = (sgMap[sgroup.id] + '').padStart(3);\n\n\tlet lines = [];\n\tlines = lines.concat(makeAtomBondLines('SAL', idstr, sgroup.atoms, atomMap));\n\tlines = lines.concat(makeAtomBondLines('SBL', idstr, sgroup.bonds, bondMap));\n\tlines = lines.concat(bracketsToMolfile(mol, sgroup, idstr));\n\treturn lines.join('\\n');\n}\n\nfunction makeAtomBondLines(prefix, idstr, ids, map) {\n\tif (!ids)\n\t\treturn [];\n\tconst lines = [];\n\tfor (let i = 0; i < Math.floor((ids.length + 14) / 15); ++i) {\n\t\tconst rem = Math.min(ids.length - 15 * i, 15); // eslint-disable-line no-mixed-operators\n\t\tlet salLine = 'M ' + prefix + ' ' + idstr + ' ' + utils.paddedNum(rem, 2);\n\t\tfor (let j = 0; j < rem; ++j)\n\t\t\tsalLine += ' ' + utils.paddedNum(map[ids[i * 15 + j]], 3); // eslint-disable-line no-mixed-operators\n\t\tlines.push(salLine);\n\t}\n\treturn lines;\n}\n\nfunction bracketsToMolfile(mol, sg, idstr) { // eslint-disable-line max-statements\n\tconst inBonds = [];\n\tconst xBonds = [];\n\tconst atomSet = new Pile(sg.atoms);\n\tSGroup.getCrossBonds(inBonds, xBonds, mol, atomSet);\n\tSGroup.bracketPos(sg, mol, xBonds);\n\tconst bb = sg.bracketBox;\n\tconst d = sg.bracketDir;\n\tconst n = d.rotateSC(1, 0);\n\tconst brackets = SGroup.getBracketParameters(mol, xBonds, atomSet, bb, d, n);\n\tconst lines = [];\n\tfor (let i = 0; i < brackets.length; ++i) {\n\t\tconst bracket = brackets[i];\n\t\tconst a0 = bracket.c.addScaled(bracket.n, -0.5 * bracket.h).yComplement();\n\t\tconst a1 = bracket.c.addScaled(bracket.n, 0.5 * bracket.h).yComplement();\n\t\tlet line = 'M SDI ' + idstr + utils.paddedNum(4, 3);\n\t\tconst coord = [a0.x, a0.y, a1.x, a1.y];\n\t\tfor (let j = 0; j < coord.length; ++j)\n\t\t\tline += utils.paddedNum(coord[j], 10, 4);\n\t\tlines.push(line);\n\t}\n\treturn lines;\n}\n\n// According Unicode Consortium sould be\n// nlRe = /\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/g;\n// http://www.unicode.org/reports/tr18/#Line_Boundaries\nconst nlRe = /\\r\\n|[\\n\\r]/g;\nfunction normalizeNewlines(str) {\n\treturn str.replace(nlRe, '\\n');\n}\n\nfunction partitionLine(/* string*/ str, /* array of int*/ parts, /* bool*/ withspace) {\n\t/* reader */\n\tconst res = [];\n\tfor (let i = 0, shift = 0; i < parts.length; ++i) {\n\t\tres.push(str.slice(shift, shift + parts[i]));\n\t\tif (withspace)\n\t\t\tshift++;\n\t\tshift += parts[i];\n\t}\n\treturn res;\n}\n\nexport default {\n\tparseCTab,\n\tparseMol,\n\tparseRxn,\n\tprepareForSaving,\n\tsaveToMolfile\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Molfile from './molfile';\n\n// TODO: reconstruct molfile string instead parsing multiple times\n// merge to bottom\nfunction parseCTFile(str, options) {\n\tconst molfile = new Molfile();\n\tconst lines = str.split(/\\r\\n|[\\n\\r]/g);\n\ttry {\n\t\treturn molfile.parseCTFile(lines, options.reactionRelayout);\n\t} catch (ex) {\n\t\tif (options.badHeaderRecover) {\n\t\t\ttry {\n\t\t\t\t// check whether there's an extra empty line on top\n\t\t\t\t// this often happens when molfile text is pasted into the dialog window\n\t\t\t\treturn molfile.parseCTFile(lines.slice(1), options.reactionRelayout);\n\t\t\t} catch (ex1) {\t//\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t// check for a missing first line\n\t\t\t\t// this sometimes happens when pasting\n\t\t\t\treturn molfile.parseCTFile([''].concat(lines), options.reactionRelayout);\n\t\t\t} catch (ex2) {\t//\n\t\t\t}\n\t\t}\n\t\tthrow ex;\n\t}\n}\n\nexport default {\n\tstringify(struct, options) {\n\t\tconst opts = options || {};\n\t\treturn new Molfile(opts.v3000).saveMolecule(struct, opts.ignoreErrors,\n\t\t\topts.noRgroups, opts.preserveIndigoDesc);\n\t},\n\tparse(str, options) {\n\t\treturn parseCTFile(str, options || {});\n\t}\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport element from './../element';\n\nimport common from './common';\nimport utils from './utils';\n\nfunction Molfile(v3000) {\n\t/* reader */\n\t/* saver */\n\tthis.molecule = null;\n\tthis.molfile = null;\n\tthis.v3000 = v3000 || false;\n}\n\nMolfile.prototype.parseCTFile = function (molfileLines, shouldReactionRelayout) {\n\tlet ret = null;\n\tif (molfileLines[0].search('\\\\$RXN') === 0)\n\t\tret = common.parseRxn(molfileLines, shouldReactionRelayout);\n\telse\n\t\tret = common.parseMol(molfileLines);\n\tret.initHalfBonds();\n\tret.initNeighbors();\n\tret.markFragments();\n\treturn ret;\n};\n\nMolfile.prototype.prepareSGroups = function (skipErrors, preserveIndigoDesc) {\n\tvar mol = this.molecule;\n\tvar toRemove = [];\n\tvar errors = 0;\n\n\tthis.molecule.sGroupForest.getSGroupsBFS().reverse().forEach((id) => {\n\t\tvar sgroup = mol.sgroups.get(id);\n\t\tvar errorIgnore = false;\n\n\t\ttry {\n\t\t\tcommon.prepareForSaving[sgroup.type](sgroup, mol);\n\t\t} catch (ex) {\n\t\t\tif (!skipErrors || typeof (ex.id) != 'number')\n\t\t\t\tthrow new Error(`Error: ${ex.message}`);\n\t\t\terrorIgnore = true;\n\t\t}\n\t\t/* eslint-disable no-mixed-operators*/\n\t\tif (errorIgnore ||\n\t\t\t!preserveIndigoDesc && /^INDIGO_.+_DESC$/i.test(sgroup.data.fieldName)) {\n\t\t/* eslint-enable no-mixed-operators*/\n\t\t\terrors += errorIgnore;\n\t\t\ttoRemove.push(sgroup.id);\n\t\t}\n\t}, this);\n\tif (errors)\n\t\tthrow new Error('Warning: ' + errors + ' invalid S-groups were detected. They will be omitted.');\n\n\tfor (var i = 0; i < toRemove.length; ++i)\n\t\tmol.sGroupDelete(toRemove[i]);\n\treturn mol;\n};\n\nMolfile.prototype.getCTab = function (molecule, rgroups) {\n\t/* saver */\n\tthis.molecule = molecule.clone();\n\tthis.prepareSGroups(false, false);\n\tthis.molfile = '';\n\tthis.writeCTab2000(rgroups);\n\treturn this.molfile;\n};\n\nMolfile.prototype.saveMolecule = function (molecule, skipSGroupErrors, norgroups, preserveIndigoDesc) { // eslint-disable-line max-statements\n\t/* saver */\n\tthis.reaction = molecule.rxnArrows.size > 0;\n\tif (molecule.rxnArrows.size > 1)\n\t\tthrow new Error('Reaction may not contain more than one arrow');\n\tthis.molfile = '' + molecule.name;\n\tif (this.reaction) {\n\t\tif (molecule.rgroups.size > 0)\n\t\t\tthrow new Error('Reactions with r-groups are not supported at the moment');\n\t\tvar components = molecule.getComponents();\n\n\t\tvar reactants = components.reactants;\n\t\tvar products = components.products;\n\t\tvar all = reactants.concat(products);\n\t\tthis.molfile = '$RXN\\n' + molecule.name + '\\n\\n\\n' +\n\t\t\tutils.paddedNum(reactants.length, 3) +\n\t\t\tutils.paddedNum(products.length, 3) +\n\t\t\tutils.paddedNum(0, 3) + '\\n';\n\t\tfor (var i = 0; i < all.length; ++i) {\n\t\t\tvar saver = new Molfile(false);\n\t\t\tvar submol = molecule.clone(all[i], null, true);\n\t\t\tvar molfile = saver.saveMolecule(submol, false, true);\n\t\t\tthis.molfile += '$MOL\\n' + molfile;\n\t\t}\n\t\treturn this.molfile;\n\t}\n\n\tif (molecule.rgroups.size > 0) {\n\t\tif (norgroups) {\n\t\t\tmolecule = molecule.getScaffold();\n\t\t} else {\n\t\t\tvar scaffold = new Molfile(false).getCTab(molecule.getScaffold(), molecule.rgroups);\n\t\t\tthis.molfile = '$MDL REV 1\\n$MOL\\n$HDR\\n' + molecule.name + '\\n\\n\\n$END HDR\\n';\n\t\t\tthis.molfile += '$CTAB\\n' + scaffold + '$END CTAB\\n';\n\n\t\t\tmolecule.rgroups.forEach((rg, rgid) => {\n\t\t\t\tthis.molfile += '$RGP\\n';\n\t\t\t\tthis.writePaddedNumber(rgid, 3);\n\t\t\t\tthis.molfile += '\\n';\n\t\t\t\trg.frags.forEach((fid) => {\n\t\t\t\t\tconst group = new Molfile(false).getCTab(molecule.getFragment(fid));\n\t\t\t\t\tthis.molfile += '$CTAB\\n' + group + '$END CTAB\\n';\n\t\t\t\t});\n\t\t\t\tthis.molfile += '$END RGP\\n';\n\t\t\t});\n\t\t\tthis.molfile += '$END MOL\\n';\n\n\t\t\treturn this.molfile;\n\t\t}\n\t}\n\n\tthis.molecule = molecule.clone();\n\n\tthis.prepareSGroups(skipSGroupErrors, preserveIndigoDesc);\n\n\tthis.writeHeader();\n\n\t// TODO: saving to V3000\n\tthis.writeCTab2000();\n\n\treturn this.molfile;\n};\n\nMolfile.prototype.writeHeader = function () {\n\t/* saver */\n\n\tvar date = new Date();\n\n\tthis.writeCR(); // TODO: write structure name\n\tthis.writeWhiteSpace(2);\n\tthis.write('Ketcher');\n\tthis.writeWhiteSpace();\n\tthis.writeCR(((date.getMonth() + 1) + '').padStart(2) + (date.getDate() + '').padStart(2) + ((date.getFullYear() % 100) + '').padStart(2) +\n\t(date.getHours() + '').padStart(2) + (date.getMinutes() + '').padStart(2) + '2D 1 1.00000 0.00000 0');\n\tthis.writeCR();\n};\n\nMolfile.prototype.write = function (str) {\n\t/* saver */\n\tthis.molfile += str;\n};\n\nMolfile.prototype.writeCR = function (str) {\n\t/* saver */\n\tif (arguments.length == 0)\n\t\tstr = '';\n\n\tthis.molfile += str + '\\n';\n};\n\nMolfile.prototype.writeWhiteSpace = function (length) {\n\t/* saver */\n\n\tif (arguments.length == 0)\n\t\tlength = 1;\n\n\tthis.write(' '.repeat(Math.max(length, 0)));\n};\n\nMolfile.prototype.writePadded = function (str, width) {\n\t/* saver */\n\tthis.write(str);\n\tthis.writeWhiteSpace(width - str.length);\n};\n\nMolfile.prototype.writePaddedNumber = function (number, width) {\n\t/* saver */\n\n\tvar str = (number - 0).toString();\n\n\tthis.writeWhiteSpace(width - str.length);\n\tthis.write(str);\n};\n\nMolfile.prototype.writePaddedFloat = function (number, width, precision) {\n\t/* saver */\n\n\tthis.write(utils.paddedNum(number, width, precision));\n};\n\nMolfile.prototype.writeCTab2000Header = function () {\n\t/* saver */\n\n\tthis.writePaddedNumber(this.molecule.atoms.size, 3);\n\tthis.writePaddedNumber(this.molecule.bonds.size, 3);\n\n\tthis.writePaddedNumber(0, 3);\n\tthis.writeWhiteSpace(3);\n\tthis.writePaddedNumber(this.molecule.isChiral ? 1 : 0, 3);\n\tthis.writePaddedNumber(0, 3);\n\tthis.writeWhiteSpace(12);\n\tthis.writePaddedNumber(999, 3);\n\tthis.writeCR(' V2000');\n};\n\nMolfile.prototype.writeCTab2000 = function (rgroups) { // eslint-disable-line max-statements\n\t/* saver */\n\tthis.writeCTab2000Header();\n\n\tthis.mapping = {};\n\tvar i = 1;\n\n\t/* eslint-disable camelcase*/\n\tvar atomList_list = [];\n\tvar atomProps_list = [];\n\t/* eslint-enable camel-case*/\n\tthis.molecule.atoms.forEach((atom, id) => {\n\t\tthis.writePaddedFloat(atom.pp.x, 10, 4);\n\t\tthis.writePaddedFloat(-atom.pp.y, 10, 4);\n\t\tthis.writePaddedFloat(atom.pp.z, 10, 4);\n\t\tthis.writeWhiteSpace();\n\n\t\tvar label = atom.label;\n\t\tif (atom.atomList != null) {\n\t\t\tlabel = 'L';\n\t\t\tatomList_list.push(id);\n\t\t} else if (atom['pseudo']) {\n\t\t\tif (atom['pseudo'].length > 3) {\n\t\t\t\tlabel = 'A';\n\t\t\t\tatomProps_list.push({ id, value: '\\'' + atom['pseudo'] + '\\'' });\n\t\t\t}\n\t\t} else if (atom['alias']) {\n\t\t\tatomProps_list.push({ id, value: atom['alias'] });\n\t\t} else if (!element.map[label] && ['A', 'Q', 'X', '*', 'R#'].indexOf(label) == -1) { // search in generics?\n\t\t\tlabel = 'C';\n\t\t\tatomProps_list.push({ id, value: atom.label });\n\t\t}\n\t\tthis.writePadded(label, 3);\n\t\tthis.writePaddedNumber(0, 2);\n\t\tthis.writePaddedNumber(0, 3);\n\t\tthis.writePaddedNumber(0, 3);\n\n\t\tif (typeof atom.hCount === 'undefined')\n\t\t\tatom.hCount = 0;\n\t\tthis.writePaddedNumber(atom.hCount, 3);\n\n\t\tif (typeof atom.stereoCare === 'undefined')\n\t\t\tatom.stereoCare = 0;\n\t\tthis.writePaddedNumber(atom.stereoCare, 3);\n\n\t\tthis.writePaddedNumber(atom.explicitValence < 0 ? 0 : (atom.explicitValence == 0 ? 15 : atom.explicitValence), 3); // eslint-disable-line no-nested-ternary\n\n\t\tthis.writePaddedNumber(0, 3);\n\t\tthis.writePaddedNumber(0, 3);\n\t\tthis.writePaddedNumber(0, 3);\n\n\t\tif (typeof atom.aam === 'undefined')\n\t\t\tatom.aam = 0;\n\t\tthis.writePaddedNumber(atom.aam, 3);\n\n\t\tif (typeof atom.invRet === 'undefined')\n\t\t\tatom.invRet = 0;\n\t\tthis.writePaddedNumber(atom.invRet, 3);\n\n\t\tif (typeof atom.exactChangeFlag === 'undefined')\n\t\t\tatom.exactChangeFlag = 0;\n\t\tthis.writePaddedNumber(atom.exactChangeFlag, 3);\n\n\t\tthis.writeCR();\n\n\t\tthis.mapping[id] = i;\n\t\ti++;\n\t}, this);\n\n\tthis.bondMapping = {};\n\ti = 1;\n\tthis.molecule.bonds.forEach((bond, id) => {\n\t\tthis.bondMapping[id] = i++;\n\t\tthis.writePaddedNumber(this.mapping[bond.begin], 3);\n\t\tthis.writePaddedNumber(this.mapping[bond.end], 3);\n\t\tthis.writePaddedNumber(bond.type, 3);\n\n\t\tif (typeof bond.stereo === 'undefined')\n\t\t\tbond.stereo = 0;\n\t\tthis.writePaddedNumber(bond.stereo, 3);\n\n\t\tthis.writePadded(bond.xxx, 3);\n\n\t\tif (typeof bond.topology === 'undefined')\n\t\t\tbond.topology = 0;\n\t\tthis.writePaddedNumber(bond.topology, 3);\n\n\t\tif (typeof bond.reactingCenterStatus === 'undefined')\n\t\t\tbond.reactingCenterStatus = 0;\n\t\tthis.writePaddedNumber(bond.reactingCenterStatus, 3);\n\n\t\tthis.writeCR();\n\t});\n\n\twhile (atomProps_list.length > 0) {\n\t\tthis.write('A ');\n\t\tthis.writePaddedNumber(atomProps_list[0].id + 1, 3);\n\t\tthis.writeCR();\n\t\tthis.writeCR(atomProps_list[0].value);\n\t\tatomProps_list.splice(0, 1);\n\t}\n\n\tvar chargeList = [];\n\tvar isotopeList = [];\n\tvar radicalList = [];\n\tvar rglabelList = [];\n\tvar rglogicList = [];\n\tvar aplabelList = [];\n\tvar rbcountList = [];\n\tvar unsaturatedList = [];\n\tvar substcountList = [];\n\n\tthis.molecule.atoms.forEach((atom, id) => {\n\t\tif (atom.charge != 0)\n\t\t\tchargeList.push([id, atom.charge]);\n\t\tif (atom.isotope != 0)\n\t\t\tisotopeList.push([id, atom.isotope]);\n\t\tif (atom.radical != 0)\n\t\t\tradicalList.push([id, atom.radical]);\n\t\tif (atom.rglabel != null && atom.label == 'R#') { // TODO need to force rglabel=null when label is not 'R#'\n\t\t\tfor (var rgi = 0; rgi < 32; rgi++)\n\t\t\t\tif (atom.rglabel & (1 << rgi)) rglabelList.push([id, rgi + 1]);\n\t\t}\n\t\tif (atom.attpnt != null)\n\t\t\taplabelList.push([id, atom.attpnt]);\n\t\tif (atom.ringBondCount != 0)\n\t\t\trbcountList.push([id, atom.ringBondCount]);\n\t\tif (atom.substitutionCount != 0)\n\t\t\tsubstcountList.push([id, atom.substitutionCount]);\n\t\tif (atom.unsaturatedAtom != 0)\n\t\t\tunsaturatedList.push([id, atom.unsaturatedAtom]);\n\t});\n\n\tif (rgroups) {\n\t\trgroups.forEach((rg, rgid) => {\n\t\t\tif (rg.resth || rg.ifthen > 0 || rg.range.length > 0) {\n\t\t\t\tvar line = ' 1 ' +\n\t\t\t\t\tutils.paddedNum(rgid, 3) + ' ' +\n\t\t\t\t\tutils.paddedNum(rg.ifthen, 3) + ' ' +\n\t\t\t\t\tutils.paddedNum(rg.resth ? 1 : 0, 3) + ' ' + rg.range;\n\t\t\t\trglogicList.push(line);\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction writeAtomPropList(propId, values) {\n\t\twhile (values.length > 0) {\n\t\t\tvar part = [];\n\n\t\t\twhile (values.length > 0 && part.length < 8) {\n\t\t\t\tpart.push(values[0]);\n\t\t\t\tvalues.splice(0, 1);\n\t\t\t}\n\n\t\t\tthis.write(propId);\n\t\t\tthis.writePaddedNumber(part.length, 3);\n\n\t\t\tpart.forEach((value) => {\n\t\t\t\tthis.writeWhiteSpace();\n\t\t\t\tthis.writePaddedNumber(this.mapping[value[0]], 3);\n\t\t\t\tthis.writeWhiteSpace();\n\t\t\t\tthis.writePaddedNumber(value[1], 3);\n\t\t\t});\n\n\t\t\tthis.writeCR();\n\t\t}\n\t}\n\n\twriteAtomPropList.call(this, 'M CHG', chargeList);\n\twriteAtomPropList.call(this, 'M ISO', isotopeList);\n\twriteAtomPropList.call(this, 'M RAD', radicalList);\n\twriteAtomPropList.call(this, 'M RGP', rglabelList);\n\tfor (var j = 0; j < rglogicList.length; ++j)\n\t\tthis.write('M LOG' + rglogicList[j] + '\\n');\n\n\twriteAtomPropList.call(this, 'M APO', aplabelList);\n\twriteAtomPropList.call(this, 'M RBC', rbcountList);\n\twriteAtomPropList.call(this, 'M SUB', substcountList);\n\twriteAtomPropList.call(this, 'M UNS', unsaturatedList);\n\n\tif (atomList_list.length > 0) {\n\t\tfor (j = 0; j < atomList_list.length; ++j) {\n\t\t\tvar aid = atomList_list[j];\n\t\t\tvar atomList = this.molecule.atoms.get(aid).atomList;\n\t\t\tthis.write('M ALS');\n\t\t\tthis.writePaddedNumber(aid + 1, 4);\n\t\t\tthis.writePaddedNumber(atomList.ids.length, 3);\n\t\t\tthis.writeWhiteSpace();\n\t\t\tthis.write(atomList.notList ? 'T' : 'F');\n\n\t\t\tvar labelList = atomList.labelList();\n\t\t\tfor (var k = 0; k < labelList.length; ++k) {\n\t\t\t\tthis.writeWhiteSpace();\n\t\t\t\tthis.writePadded(labelList[k], 3);\n\t\t\t}\n\t\t\tthis.writeCR();\n\t\t}\n\t}\n\n\tvar sgmap = {};\n\tvar cnt = 1;\n\tvar sgmapback = {};\n\tvar sgorder = this.molecule.sGroupForest.getSGroupsBFS();\n\tsgorder.forEach((id) => {\n\t\tsgmapback[cnt] = id;\n\t\tsgmap[id] = cnt++;\n\t});\n\tfor (var q = 1; q < cnt; ++q) { // each group on its own\n\t\tvar id = sgmapback[q];\n\t\tvar sgroup = this.molecule.sgroups.get(id);\n\t\tthis.write('M STY');\n\t\tthis.writePaddedNumber(1, 3);\n\t\tthis.writeWhiteSpace(1);\n\t\tthis.writePaddedNumber(q, 3);\n\t\tthis.writeWhiteSpace(1);\n\t\tthis.writePadded(sgroup.type, 3);\n\t\tthis.writeCR();\n\n\t\t// TODO: write subtype, M SST\n\n\t\tthis.write('M SLB');\n\t\tthis.writePaddedNumber(1, 3);\n\t\tthis.writeWhiteSpace(1);\n\t\tthis.writePaddedNumber(q, 3);\n\t\tthis.writeWhiteSpace(1);\n\t\tthis.writePaddedNumber(q, 3);\n\t\tthis.writeCR();\n\n\t\tvar parentid = this.molecule.sGroupForest.parent.get(id);\n\t\tif (parentid >= 0) {\n\t\t\tthis.write('M SPL');\n\t\t\tthis.writePaddedNumber(1, 3);\n\t\t\tthis.writeWhiteSpace(1);\n\t\t\tthis.writePaddedNumber(q, 3);\n\t\t\tthis.writeWhiteSpace(1);\n\t\t\tthis.writePaddedNumber(sgmap[parentid], 3);\n\t\t\tthis.writeCR();\n\t\t}\n\n\t\t// connectivity\n\t\tif (sgroup.type == 'SRU' && sgroup.data.connectivity) {\n\t\t\tvar connectivity = '';\n\t\t\tconnectivity += ' ';\n\t\t\tconnectivity += q.toString().padStart(3);\n\t\t\tconnectivity += ' ';\n\t\t\tconnectivity += (sgroup.data.connectivity || '').padEnd(3);\n\t\t\tthis.write('M SCN');\n\t\t\tthis.writePaddedNumber(1, 3);\n\t\t\tthis.write(connectivity.toUpperCase());\n\t\t\tthis.writeCR();\n\t\t}\n\n\t\tif (sgroup.type == 'SRU') {\n\t\t\tthis.write('M SMT ');\n\t\t\tthis.writePaddedNumber(q, 3);\n\t\t\tthis.writeWhiteSpace();\n\t\t\tthis.write(sgroup.data.subscript || 'n');\n\t\t\tthis.writeCR();\n\t\t}\n\n\t\tthis.writeCR(common.saveToMolfile[sgroup.type](sgroup, this.molecule, sgmap, this.mapping, this.bondMapping));\n\t}\n\n\t// TODO: write M APO\n\t// TODO: write M AAL\n\t// TODO: write M RGP\n\t// TODO: write M LOG\n\n\tthis.writeCR('M END');\n};\n\nexport default Molfile;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n/* eslint-disable guard-for-in */ // todo\n\nimport Vec2 from '../../util/vec2';\nimport Pool from '../../util/pool';\nimport { SGroup } from './../struct/index';\nimport utils from './utils';\n\n/**\n * @param str { string }\n * @param valueString { boolean }\n * @returns { Pool }\n */\nfunction readKeyValuePairs(str, valueString) {\n\tconst ret = new Pool();\n\tconst partition = utils.partitionLineFixed(str, 3, true);\n\tconst count = utils.parseDecimalInt(partition[0]);\n\n\tfor (let i = 0; i < count; ++i) {\n\t\tconst key = utils.parseDecimalInt(partition[2 * i + 1]) - 1;\n\t\tconst value = valueString ?\n\t\t\tpartition[2 * i + 2].trim() :\n\t\t\tutils.parseDecimalInt(partition[2 * i + 2]);\n\n\t\tret.set(key, value);\n\t}\n\n\treturn ret;\n}\n\n/**\n * @param str { string }\n * @param valueString { boolean }\n * @returns { Array }\n */\nfunction readKeyMultiValuePairs(str, valueString) {\n\t/* reader */\n\tvar ret = [];\n\tvar partition = utils.partitionLineFixed(str, 3, true);\n\tvar count = utils.parseDecimalInt(partition[0]);\n\tfor (var i = 0; i < count; ++i) {\n\t\tret.push([\n\t\t\t/* eslint-disable no-mixed-operators*/\n\t\t\tutils.parseDecimalInt(partition[2 * i + 1]) - 1,\n\t\t\tvalueString ? partition[2 * i + 2].trim() : utils.parseDecimalInt(partition[2 * i + 2])\n\t\t\t/* eslint-enable no-mixed-operators*/\n\t\t]);\n\t}\n\treturn ret;\n}\n\nfunction postLoadMul(sgroup, mol, atomMap) { // eslint-disable-line max-statements\n\tsgroup.data.mul = sgroup.data.subscript - 0;\n\tvar atomReductionMap = {};\n\n\tsgroup.atoms = SGroup.filterAtoms(sgroup.atoms, atomMap);\n\tsgroup.patoms = SGroup.filterAtoms(sgroup.patoms, atomMap);\n\n\t// mark repetitions for removal\n\tfor (var k = 1; k < sgroup.data.mul; ++k) {\n\t\tfor (var m = 0; m < sgroup.patoms.length; ++m) {\n\t\t\tvar raid = sgroup.atoms[k * sgroup.patoms.length + m]; // eslint-disable-line no-mixed-operators\n\t\t\tif (raid < 0)\n\t\t\t\tcontinue; // eslint-disable-line no-continue\n\t\t\tif (sgroup.patoms[m] < 0)\n\t\t\t\tthrow new Error('parent atom missing');\n\t\t\tatomReductionMap[raid] = sgroup.patoms[m]; // \"merge\" atom in parent\n\t\t}\n\t}\n\tsgroup.patoms = SGroup.removeNegative(sgroup.patoms);\n\n\tvar patomsMap = identityMap(sgroup.patoms);\n\n\tvar bondsToRemove = [];\n\tmol.bonds.forEach((bond, bid) => {\n\t\tvar beginIn = bond.begin in atomReductionMap;\n\t\tvar endIn = bond.end in atomReductionMap;\n\t\t// if both adjacent atoms of a bond are to be merged, remove it\n\t\t/* eslint-disable no-mixed-operators*/\n\t\tif (beginIn && endIn ||\n\t\t\tbeginIn && bond.end in patomsMap ||\n\t\t\tendIn && bond.begin in patomsMap)\n\t\t\tbondsToRemove.push(bid);\n\t\t/* eslint-enable no-mixed-operators*/\n\t\t// if just one atom is merged, modify the bond accordingly\n\t\telse if (beginIn)\n\t\t\tbond.begin = atomReductionMap[bond.begin];\n\t\telse if (endIn)\n\t\t\tbond.end = atomReductionMap[bond.end];\n\t}, sgroup);\n\n\t// apply removal lists\n\tfor (var b = 0; b < bondsToRemove.length; ++b)\n\t\tmol.bonds.delete(bondsToRemove[b]);\n\tfor (var a in atomReductionMap) {\n\t\tmol.atoms.delete(+a);\n\t\tatomMap[a] = -1;\n\t}\n\tsgroup.atoms = sgroup.patoms;\n\tsgroup.patoms = null;\n}\n\nfunction postLoadSru(sgroup) {\n\tsgroup.data.connectivity = (sgroup.data.connectivity || 'EU').trim().toLowerCase();\n}\n\nfunction postLoadSup(sgroup) {\n\tsgroup.data.name = (sgroup.data.subscript || '').trim();\n\tsgroup.data.subscript = '';\n}\n\nfunction postLoadGen(sgroup, mol, atomMap) { // eslint-disable-line no-unused-vars\n}\n\nfunction postLoadDat(sgroup, mol) {\n\tif (!sgroup.data.absolute)\n\t\tsgroup.pp = sgroup.pp.add(SGroup.getMassCentre(mol, sgroup.atoms));\n}\n\nfunction loadSGroup(mol, sg, atomMap) {\n\tvar postLoadMap = {\n\t\tMUL: postLoadMul,\n\t\tSRU: postLoadSru,\n\t\tSUP: postLoadSup,\n\t\tDAT: postLoadDat,\n\t\tGEN: postLoadGen\n\t};\n\n\t// add the group to the molecule\n\tsg.id = mol.sgroups.add(sg);\n\n\t// apply type-specific post-processing\n\tpostLoadMap[sg.type](sg, mol, atomMap);\n\t// mark atoms in the group as belonging to it\n\tfor (let s = 0; s < sg.atoms.length; ++s) {\n\t\tif (mol.atoms.has(sg.atoms[s]))\n\t\t\tmol.atoms.get(sg.atoms[s]).sgs.add(sg.id);\n\t}\n\n\tif (sg.type === 'DAT')\n\t\tmol.sGroupForest.insert(sg.id, -1, []);\n\telse\n\t\tmol.sGroupForest.insert(sg.id);\n\n\treturn sg.id;\n}\n\nfunction initSGroup(sGroups, propData) {\n\t/* reader */\n\tconst kv = readKeyValuePairs(propData, true);\n\tfor (const [key, type] of kv) {\n\t\tif (!(type in SGroup.TYPES))\n\t\t\tthrow new Error('Unsupported S-group type');\n\n\t\tconst sg = new SGroup(type);\n\t\tsg.number = key;\n\t\tsGroups[key] = sg;\n\t}\n}\n\nfunction applySGroupProp(sGroups, propName, propData, numeric, core) { // eslint-disable-line max-params\n\tconst kv = readKeyValuePairs(propData, !(numeric));\n\tfor (const key of kv.keys())\n\t\t// \"core\" properties are stored directly in an sgroup, not in sgroup.data\n\t\t(core ? sGroups[key] : sGroups[key].data)[propName] = kv.get(key);\n}\n\nfunction applySGroupArrayProp(sGroups, propName, propData, shift) {\n\t/* reader */\n\tconst sid = utils.parseDecimalInt(propData.slice(1, 4)) - 1;\n\tconst num = utils.parseDecimalInt(propData.slice(4, 8));\n\tlet part = toIntArray(utils.partitionLineFixed(propData.slice(8), 3, true));\n\n\tif (part.length !== num)\n\t\tthrow new Error('File format invalid');\n\tif (shift)\n\t\tpart = part.map(v => v + shift);\n\n\tsGroups[sid][propName] = sGroups[sid][propName].concat(part);\n}\n\nfunction applyDataSGroupName(sg, name) {\n\t/* reader */\n\tsg.data.fieldName = name;\n}\n\nfunction applyDataSGroupQuery(sg, query) {\n\t/* reader */\n\tsg.data.query = query;\n}\n\nfunction applyDataSGroupQueryOp(sg, queryOp) {\n\t/* reader */\n\tsg.data.queryOp = queryOp;\n}\n\nfunction applyDataSGroupDesc(sGroups, propData) {\n\t/* reader */\n\tvar split = utils.partitionLine(propData, [4, 31, 2, 20, 2, 3], false);\n\tvar id = utils.parseDecimalInt(split[0]) - 1;\n\tvar fieldName = split[1].trim();\n\tvar fieldType = split[2].trim();\n\tvar units = split[3].trim();\n\tvar query = split[4].trim();\n\tvar queryOp = split[5].trim();\n\tvar sGroup = sGroups[id];\n\tsGroup.data.fieldType = fieldType;\n\tsGroup.data.fieldName = fieldName;\n\tsGroup.data.units = units;\n\tsGroup.data.query = query;\n\tsGroup.data.queryOp = queryOp;\n}\n\nfunction applyDataSGroupInfo(sg, propData) { // eslint-disable-line max-statements\n\t/* reader */\n\tvar split = utils.partitionLine(propData, [10/* x.x*/, 10/* y.y*/, 4/* eee*/, 1/* f*/, 1/* g*/, 1/* h*/, 3/* i */, 3/* jjj*/, 3/* kkk*/, 3/* ll*/, 2/* m*/, 3/* n*/, 2/* oo*/], false);\n\n\tvar x = parseFloat(split[0]);\n\tvar y = parseFloat(split[1]);\n\tvar attached = split[3].trim() == 'A';\n\tvar absolute = split[4].trim() == 'A';\n\tvar showUnits = split[5].trim() == 'U';\n\tvar nCharsToDisplay = split[7].trim();\n\tnCharsToDisplay = nCharsToDisplay == 'ALL' ? -1 : utils.parseDecimalInt(nCharsToDisplay);\n\tvar tagChar = split[10].trim();\n\tvar daspPos = utils.parseDecimalInt(split[11].trim());\n\n\tsg.pp = new Vec2(x, -y);\n\tsg.data.attached = attached;\n\tsg.data.absolute = absolute;\n\tsg.data.showUnits = showUnits;\n\tsg.data.nCharsToDisplay = nCharsToDisplay;\n\tsg.data.tagChar = tagChar;\n\tsg.data.daspPos = daspPos;\n}\n\nfunction applyDataSGroupInfoLine(sGroups, propData) {\n\t/* reader */\n\tvar id = utils.parseDecimalInt(propData.substr(0, 4)) - 1;\n\tvar sg = sGroups[id];\n\tapplyDataSGroupInfo(sg, propData.substr(5));\n}\n\nfunction applyDataSGroupData(sg, data, finalize) {\n\t/* reader */\n\tsg.data.fieldValue = (sg.data.fieldValue || '') + data;\n\tif (finalize) {\n\t\tsg.data.fieldValue = trimRight(sg.data.fieldValue);\n\t\tif (sg.data.fieldValue.startsWith('\"') && sg.data.fieldValue.endsWith('\"'))\n\t\t\tsg.data.fieldValue = sg.data.fieldValue.substr(1, sg.data.fieldValue.length - 2);\n\t}\n}\n\nfunction applyDataSGroupDataLine(sGroups, propData, finalize) {\n\t/* reader */\n\tvar id = utils.parseDecimalInt(propData.substr(0, 5)) - 1;\n\tvar data = propData.substr(5);\n\tvar sg = sGroups[id];\n\tapplyDataSGroupData(sg, data, finalize);\n}\n\n// Utilities functions\nfunction toIntArray(strArray) {\n\t/* reader */\n\tvar ret = [];\n\tfor (var j = 0; j < strArray.length; ++j)\n\t\tret[j] = utils.parseDecimalInt(strArray[j]);\n\treturn ret;\n}\n\nfunction trimRight(str) {\n\treturn str.replace(/\\s+$/, '');\n}\n\nfunction identityMap(array) {\n\tvar map = {};\n\tfor (var i = 0; i < array.length; ++i)\n\t\tmap[array[i]] = array[i];\n\treturn map;\n}\n\nexport default {\n\treadKeyValuePairs,\n\treadKeyMultiValuePairs,\n\tloadSGroup,\n\tinitSGroup,\n\tapplySGroupProp,\n\tapplySGroupArrayProp,\n\tapplyDataSGroupName,\n\tapplyDataSGroupQuery,\n\tapplyDataSGroupQueryOp,\n\tapplyDataSGroupDesc,\n\tapplyDataSGroupInfo,\n\tapplyDataSGroupData,\n\tapplyDataSGroupInfoLine,\n\tapplyDataSGroupDataLine\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport Struct, { Bond, RxnArrow, RxnPlus } from './../struct/index';\n\nfunction paddedNum(number, width, precision) {\n\tnumber = parseFloat(number);\n\n\tvar numStr = number.toFixed(precision || 0).replace(',', '.'); // Really need to replace?\n\tif (numStr.length > width)\n\t\tthrow new Error('number does not fit');\n\n\treturn numStr.padStart(width);\n}\n\nfunction parseDecimalInt(str) {\n\t/* reader */\n\tvar val = parseInt(str, 10);\n\n\treturn isNaN(val) ? 0 : val; // eslint-disable-line\n}\n\nfunction partitionLine(/* string*/ str, /* array of int*/ parts, /* bool*/ withspace) {\n\t/* reader */\n\tvar res = [];\n\tfor (var i = 0, shift = 0; i < parts.length; ++i) {\n\t\tres.push(str.slice(shift, shift + parts[i]));\n\t\tif (withspace)\n\t\t\tshift++;\n\t\tshift += parts[i];\n\t}\n\treturn res;\n}\n\nfunction partitionLineFixed(/* string*/ str, /* int*/ itemLength, /* bool*/ withspace) {\n\t/* reader */\n\tvar res = [];\n\tfor (var shift = 0; shift < str.length; shift += itemLength) {\n\t\tres.push(str.slice(shift, shift + itemLength));\n\t\tif (withspace)\n\t\t\tshift++;\n\t}\n\treturn res;\n}\n\nvar fmtInfo = {\n\tbondTypeMap: {\n\t\t1: Bond.PATTERN.TYPE.SINGLE,\n\t\t2: Bond.PATTERN.TYPE.DOUBLE,\n\t\t3: Bond.PATTERN.TYPE.TRIPLE,\n\t\t4: Bond.PATTERN.TYPE.AROMATIC,\n\t\t5: Bond.PATTERN.TYPE.SINGLE_OR_DOUBLE,\n\t\t6: Bond.PATTERN.TYPE.SINGLE_OR_AROMATIC,\n\t\t7: Bond.PATTERN.TYPE.DOUBLE_OR_AROMATIC,\n\t\t8: Bond.PATTERN.TYPE.ANY\n\t},\n\tbondStereoMap: {\n\t\t0: Bond.PATTERN.STEREO.NONE,\n\t\t1: Bond.PATTERN.STEREO.UP,\n\t\t4: Bond.PATTERN.STEREO.EITHER,\n\t\t6: Bond.PATTERN.STEREO.DOWN,\n\t\t3: Bond.PATTERN.STEREO.CIS_TRANS\n\t},\n\tv30bondStereoMap: {\n\t\t0: Bond.PATTERN.STEREO.NONE,\n\t\t1: Bond.PATTERN.STEREO.UP,\n\t\t2: Bond.PATTERN.STEREO.EITHER,\n\t\t3: Bond.PATTERN.STEREO.DOWN\n\t},\n\tbondTopologyMap: {\n\t\t0: Bond.PATTERN.TOPOLOGY.EITHER,\n\t\t1: Bond.PATTERN.TOPOLOGY.RING,\n\t\t2: Bond.PATTERN.TOPOLOGY.CHAIN\n\t},\n\tcountsLinePartition: [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6],\n\tatomLinePartition: [10, 10, 10, 1, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],\n\tbondLinePartition: [3, 3, 3, 3, 3, 3, 3],\n\tatomListHeaderPartition: [3, 1, 1, 4, 1, 1],\n\tatomListHeaderLength: 11, // = atomListHeaderPartition.reduce(function(a,b) { return a + b; }, 0)\n\tatomListHeaderItemLength: 4,\n\tchargeMap: [0, +3, +2, +1, 0, -1, -2, -3],\n\tvalenceMap: [undefined, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0],\n\timplicitHydrogenMap: [undefined, 0, 1, 2, 3, 4],\n\tv30atomPropMap: {\n\t\tCHG: 'charge',\n\t\tRAD: 'radical',\n\t\tMASS: 'isotope',\n\t\tVAL: 'explicitValence',\n\t\tHCOUNT: 'hCount',\n\t\tINVRET: 'invRet',\n\t\tSUBST: 'substitutionCount',\n\t\tUNSAT: 'unsaturatedAtom',\n\t\tRBCNT: 'ringBondCount'\n\t},\n\trxnItemsPartition: [3, 3, 3]\n};\n\nvar FRAGMENT = {\n\tNONE: 0,\n\tREACTANT: 1,\n\tPRODUCT: 2,\n\tAGENT: 3\n};\n\nvar SHOULD_RESCALE_MOLECULES = true;\n\nfunction rxnMerge(mols, nReactants, nProducts, nAgents, shouldReactionRelayout) /* Struct */ { // eslint-disable-line max-statements\n\t/* reader */\n\tvar ret = new Struct();\n\tvar bbReact = [],\n\t\tbbAgent = [],\n\t\tbbProd = [];\n\tvar molReact = [],\n\t\tmolAgent = [],\n\t\tmolProd = [];\n\tvar j;\n\tvar bondLengthData = { cnt: 0, totalLength: 0 };\n\tfor (j = 0; j < mols.length; ++j) {\n\t\tvar mol = mols[j];\n\t\tvar bondLengthDataMol = mol.getBondLengthData();\n\t\tbondLengthData.cnt += bondLengthDataMol.cnt;\n\t\tbondLengthData.totalLength += bondLengthDataMol.totalLength;\n\t}\n\tif (SHOULD_RESCALE_MOLECULES) {\n\t\tvar avgBondLength = 1 / (bondLengthData.cnt == 0 ? 1 : bondLengthData.totalLength / bondLengthData.cnt);\n\t\tfor (j = 0; j < mols.length; ++j) {\n\t\t\tmol = mols[j];\n\t\t\tmol.scale(avgBondLength);\n\t\t}\n\t}\n\n\tfor (j = 0; j < mols.length; ++j) {\n\t\tmol = mols[j];\n\t\tvar bb = mol.getCoordBoundingBoxObj();\n\t\tif (!bb)\n\t\t\tcontinue; // eslint-disable-line no-continue\n\n\t\tvar fragmentType = (j < nReactants ? FRAGMENT.REACTANT : // eslint-disable-line no-nested-ternary\n\t\t\t(j < nReactants + nProducts ? FRAGMENT.PRODUCT :\n\t\t\t\tFRAGMENT.AGENT));\n\t\tif (fragmentType == FRAGMENT.REACTANT) {\n\t\t\tbbReact.push(bb);\n\t\t\tmolReact.push(mol);\n\t\t} else if (fragmentType == FRAGMENT.AGENT) {\n\t\t\tbbAgent.push(bb);\n\t\t\tmolAgent.push(mol);\n\t\t} else if (fragmentType == FRAGMENT.PRODUCT) {\n\t\t\tbbProd.push(bb);\n\t\t\tmolProd.push(mol);\n\t\t}\n\n\t\tmol.atoms.forEach((atom) => {\n\t\t\tatom.rxnFragmentType = fragmentType;\n\t\t});\n\t}\n\n\tfunction shiftMol(ret, mol, bb, xorig, over) { // eslint-disable-line max-params\n\t\tvar d = new Vec2(xorig - bb.min.x, over ? 1 - bb.min.y : -(bb.min.y + bb.max.y) / 2);\n\t\tmol.atoms.forEach((atom) => {\n\t\t\tatom.pp.add_(d); // eslint-disable-line no-underscore-dangle\n\t\t});\n\n\t\tmol.sgroups.forEach((item) => {\n\t\t\tif (item.pp)\n\t\t\t\titem.pp.add_(d); // eslint-disable-line no-underscore-dangle\n\t\t});\n\t\tbb.min.add_(d); // eslint-disable-line no-underscore-dangle\n\t\tbb.max.add_(d); // eslint-disable-line no-underscore-dangle\n\t\tmol.mergeInto(ret);\n\t\treturn bb.max.x - bb.min.x;\n\t}\n\n\tif (shouldReactionRelayout) {\n\t// reaction fragment layout\n\t\tvar xorig = 0;\n\t\tfor (j = 0; j < molReact.length; ++j)\n\t\t\txorig += shiftMol(ret, molReact[j], bbReact[j], xorig, false) + 2.0;\n\t\txorig += 2.0;\n\t\tfor (j = 0; j < molAgent.length; ++j)\n\t\t\txorig += shiftMol(ret, molAgent[j], bbAgent[j], xorig, true) + 2.0;\n\t\txorig += 2.0;\n\n\t\tfor (j = 0; j < molProd.length; ++j)\n\t\t\txorig += shiftMol(ret, molProd[j], bbProd[j], xorig, false) + 2.0;\n\t} else {\n\t\tfor (j = 0; j < molReact.length; ++j)\n\t\t\tmolReact[j].mergeInto(ret);\n\t\tfor (j = 0; j < molAgent.length; ++j)\n\t\t\tmolAgent[j].mergeInto(ret);\n\t\tfor (j = 0; j < molProd.length; ++j)\n\t\t\tmolProd[j].mergeInto(ret);\n\t}\n\n\tvar bb1;\n\tvar bb2;\n\tvar x;\n\tvar y;\n\tvar bbReactAll = null;\n\tvar bbProdAll = null;\n\tfor (j = 0; j <\tbbReact.length - 1; ++j) {\n\t\tbb1 = bbReact[j];\n\t\tbb2 = bbReact[j + 1];\n\n\t\tx = (bb1.max.x + bb2.min.x) / 2;\n\t\ty = (bb1.max.y + bb1.min.y + bb2.max.y + bb2.min.y) / 4;\n\n\t\tret.rxnPluses.add(new RxnPlus({ pp: new Vec2(x, y) }));\n\t}\n\tfor (j = 0; j <\tbbReact.length; ++j) {\n\t\tif (j == 0) {\n\t\t\tbbReactAll = {};\n\t\t\tbbReactAll.max = new Vec2(bbReact[j].max);\n\t\t\tbbReactAll.min = new Vec2(bbReact[j].min);\n\t\t} else {\n\t\t\tbbReactAll.max = Vec2.max(bbReactAll.max, bbReact[j].max);\n\t\t\tbbReactAll.min = Vec2.min(bbReactAll.min, bbReact[j].min);\n\t\t}\n\t}\n\tfor (j = 0; j <\tbbProd.length - 1; ++j) {\n\t\tbb1 = bbProd[j];\n\t\tbb2 = bbProd[j + 1];\n\n\t\tx = (bb1.max.x + bb2.min.x) / 2;\n\t\ty = (bb1.max.y + bb1.min.y + bb2.max.y + bb2.min.y) / 4;\n\n\t\tret.rxnPluses.add(new RxnPlus({ pp: new Vec2(x, y) }));\n\t}\n\tfor (j = 0; j <\tbbProd.length; ++j) {\n\t\tif (j == 0) {\n\t\t\tbbProdAll = {};\n\t\t\tbbProdAll.max = new Vec2(bbProd[j].max);\n\t\t\tbbProdAll.min = new Vec2(bbProd[j].min);\n\t\t} else {\n\t\t\tbbProdAll.max = Vec2.max(bbProdAll.max, bbProd[j].max);\n\t\t\tbbProdAll.min = Vec2.min(bbProdAll.min, bbProd[j].min);\n\t\t}\n\t}\n\tbb1 = bbReactAll;\n\tbb2 = bbProdAll;\n\tif (!bb1 && !bb2) {\n\t\tret.rxnArrows.add(new RxnArrow({ pp: new Vec2(0, 0) }));\n\t} else {\n\t\tvar v1 = bb1 ? new Vec2(bb1.max.x, (bb1.max.y + bb1.min.y) / 2) : null;\n\t\tvar v2 = bb2 ? new Vec2(bb2.min.x, (bb2.max.y + bb2.min.y) / 2) : null;\n\t\tvar defaultOffset = 3;\n\t\tif (!v1)\n\t\t\tv1 = new Vec2(v2.x - defaultOffset, v2.y);\n\t\tif (!v2)\n\t\t\tv2 = new Vec2(v1.x + defaultOffset, v1.y);\n\t\tret.rxnArrows.add(new RxnArrow({ pp: Vec2.lc2(v1, 0.5, v2, 0.5) }));\n\t}\n\tret.isReaction = true;\n\treturn ret;\n}\n\nexport default {\n\tfmtInfo,\n\tpaddedNum,\n\tparseDecimalInt,\n\tpartitionLine,\n\tpartitionLineFixed,\n\trxnMerge\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n/* eslint-disable guard-for-in */ // todo\n\nimport Vec2 from '../../util/vec2';\nimport Pool from '../../util/pool';\nimport element from './../element';\nimport Struct, { Atom, AtomList, Bond, RGroup, SGroup } from './../struct/index';\n\nimport sGroup from './parseSGroup';\nimport utils from './utils';\n\nconst loadRGroupFragments = true; // TODO: set to load the fragments\n\nfunction parseAtomLine(atomLine) {\n\t/* reader */\n\tvar atomSplit = utils.partitionLine(atomLine, utils.fmtInfo.atomLinePartition);\n\tvar params =\n\t\t{\n\t\t\t// generic\n\t\t\tpp: new Vec2(parseFloat(atomSplit[0]), -parseFloat(atomSplit[1]), parseFloat(atomSplit[2])),\n\t\t\tlabel: atomSplit[4].trim(),\n\t\t\texplicitValence: utils.fmtInfo.valenceMap[utils.parseDecimalInt(atomSplit[10])],\n\n\t\t\t// obsolete\n\t\t\tmassDifference: utils.parseDecimalInt(atomSplit[5]),\n\t\t\tcharge: utils.fmtInfo.chargeMap[utils.parseDecimalInt(atomSplit[6])],\n\n\t\t\t// query\n\t\t\thCount: utils.parseDecimalInt(utils.parseDecimalInt(atomSplit[8])),\n\t\t\tstereoCare: utils.parseDecimalInt(atomSplit[9]) != 0,\n\n\t\t\t// reaction\n\t\t\taam: utils.parseDecimalInt(atomSplit[14]),\n\t\t\tinvRet: utils.parseDecimalInt(atomSplit[15]),\n\n\t\t\t// reaction query\n\t\t\texactChangeFlag: utils.parseDecimalInt(atomSplit[16]) != 0\n\t\t};\n\treturn new Atom(params);\n}\n\nfunction parseBondLine(bondLine) {\n\t/* reader */\n\tvar bondSplit = utils.partitionLine(bondLine, utils.fmtInfo.bondLinePartition);\n\tvar params =\n\t\t{\n\t\t\tbegin: utils.parseDecimalInt(bondSplit[0]) - 1,\n\t\t\tend: utils.parseDecimalInt(bondSplit[1]) - 1,\n\t\t\ttype: utils.fmtInfo.bondTypeMap[utils.parseDecimalInt(bondSplit[2])],\n\t\t\tstereo: utils.fmtInfo.bondStereoMap[utils.parseDecimalInt(bondSplit[3])],\n\t\t\txxx: bondSplit[4],\n\t\t\ttopology: utils.fmtInfo.bondTopologyMap[utils.parseDecimalInt(bondSplit[5])],\n\t\t\treactingCenterStatus: utils.parseDecimalInt(bondSplit[6])\n\t\t};\n\n\treturn new Bond(params);\n}\n\nfunction parseAtomListLine(/* string */atomListLine) {\n\t/* reader */\n\tvar split = utils.partitionLine(atomListLine, utils.fmtInfo.atomListHeaderPartition);\n\n\tvar number = utils.parseDecimalInt(split[0]) - 1;\n\tvar notList = (split[2].trim() == 'T');\n\tvar count = utils.parseDecimalInt(split[4].trim());\n\n\tvar ids = atomListLine.slice(utils.fmtInfo.atomListHeaderLength);\n\tvar list = [];\n\tvar itemLength = utils.fmtInfo.atomListHeaderItemLength;\n\tfor (var i = 0; i < count; ++i)\n\t\tlist[i] = utils.parseDecimalInt(ids.slice(i * itemLength, ((i + 1) * itemLength) - 1));\n\n\treturn {\n\t\taid: number,\n\t\tatomList: new AtomList({\n\t\t\tnotList,\n\t\t\tids: list\n\t\t})\n\t};\n}\n\n/**\n * @param ctab\n * @param ctabLines\n * @param shift\n * @param end\n * @param sGroups\n * @param rLogic\n * @returns { Pool }\n */\nfunction parsePropertyLines(ctab, ctabLines, shift, end, sGroups, rLogic) { // eslint-disable-line max-statements, max-params\n\t/* reader */\n\tconst props = new Pool();\n\n\twhile (shift < end) {\n\t\tvar line = ctabLines[shift];\n\t\tif (line.charAt(0) == 'A') {\n\t\t\tvar propValue = ctabLines[++shift];\n\t\t\tvar isPseudo = /'.+'/.test(propValue);\n\t\t\tif (isPseudo && !props.get('pseudo'))\n\t\t\t\tprops.set('pseudo', new Pool());\n\t\t\tif (!isPseudo && !props.get('alias'))\n\t\t\t\tprops.set('alias', new Pool());\n\t\t\tif (isPseudo) propValue = propValue.replace(/'/g, '');\n\t\t\tprops.get(isPseudo ? 'pseudo' : 'alias').set(utils.parseDecimalInt(line.slice(3, 6)) - 1, propValue);\n\t\t} else if (line.charAt(0) == 'M') {\n\t\t\tvar type = line.slice(3, 6);\n\t\t\tvar propertyData = line.slice(6);\n\t\t\tif (type == 'END') {\n\t\t\t\tbreak;\n\t\t\t} else if (type == 'CHG') {\n\t\t\t\tif (!props.get('charge'))\n\t\t\t\t\tprops.set('charge', sGroup.readKeyValuePairs(propertyData));\n\t\t\t} else if (type == 'RAD') {\n\t\t\t\tif (!props.get('radical'))\n\t\t\t\t\tprops.set('radical', sGroup.readKeyValuePairs(propertyData));\n\t\t\t} else if (type == 'ISO') {\n\t\t\t\tif (!props.get('isotope'))\n\t\t\t\t\tprops.set('isotope', sGroup.readKeyValuePairs(propertyData));\n\t\t\t} else if (type == 'RBC') {\n\t\t\t\tif (!props.get('ringBondCount'))\n\t\t\t\t\tprops.set('ringBondCount', sGroup.readKeyValuePairs(propertyData));\n\t\t\t} else if (type == 'SUB') {\n\t\t\t\tif (!props.get('substitutionCount'))\n\t\t\t\t\tprops.set('substitutionCount', sGroup.readKeyValuePairs(propertyData));\n\t\t\t} else if (type == 'UNS') {\n\t\t\t\tif (!props.get('unsaturatedAtom'))\n\t\t\t\t\tprops.set('unsaturatedAtom', sGroup.readKeyValuePairs(propertyData));\n\t\t\t\t// else if (type == \"LIN\") // link atom\n\t\t\t} else if (type == 'RGP') { // rgroup atom\n\t\t\t\tif (!props.get('rglabel'))\n\t\t\t\t\tprops.set('rglabel', new Pool());\n\t\t\t\tvar rglabels = props.get('rglabel');\n\t\t\t\tvar a2rs = sGroup.readKeyMultiValuePairs(propertyData);\n\t\t\t\tfor (var a2ri = 0; a2ri < a2rs.length; a2ri++) {\n\t\t\t\t\tvar a2r = a2rs[a2ri];\n\t\t\t\t\trglabels.set(a2r[0], (rglabels.get(a2r[0]) || 0) | (1 << (a2r[1] - 1)));\n\t\t\t\t}\n\t\t\t} else if (type == 'LOG') { // rgroup atom\n\t\t\t\tpropertyData = propertyData.slice(4);\n\t\t\t\tvar rgid = utils.parseDecimalInt(propertyData.slice(0, 3).trim());\n\t\t\t\tvar iii = utils.parseDecimalInt(propertyData.slice(4, 7).trim());\n\t\t\t\tvar hhh = utils.parseDecimalInt(propertyData.slice(8, 11).trim());\n\t\t\t\tvar ooo = propertyData.slice(12).trim();\n\t\t\t\tvar logic = {};\n\t\t\t\tif (iii > 0)\n\t\t\t\t\tlogic.ifthen = iii;\n\t\t\t\tlogic.resth = hhh == 1;\n\t\t\t\tlogic.range = ooo;\n\t\t\t\trLogic[rgid] = logic;\n\t\t\t} else if (type == 'APO') {\n\t\t\t\tif (!props.get('attpnt'))\n\t\t\t\t\tprops.set('attpnt', sGroup.readKeyValuePairs(propertyData));\n\t\t\t} else if (type == 'ALS') { // atom list\n\t\t\t\tconst pool = parsePropertyLineAtomList(\n\t\t\t\t\tutils.partitionLine(propertyData, [1, 3, 3, 1, 1, 1]),\n\t\t\t\t\tutils.partitionLineFixed(propertyData.slice(10), 4, false)\n\t\t\t\t);\n\n\t\t\t\tif (!props.get('atomList'))\n\t\t\t\t\tprops.set('atomList', new Pool());\n\t\t\t\tif (!props.get('label'))\n\t\t\t\t\tprops.set('label', new Pool());\n\n\t\t\t\tpool.forEach((atomList, aid) => {\n\t\t\t\t\tprops.get('label').set(aid, 'L#');\n\t\t\t\t\tprops.get('atomList').set(aid, atomList);\n\t\t\t\t});\n\t\t\t} else if (type == 'STY') { // introduce s-group\n\t\t\t\tsGroup.initSGroup(sGroups, propertyData);\n\t\t\t} else if (type == 'SST') {\n\t\t\t\tsGroup.applySGroupProp(sGroups, 'subtype', propertyData);\n\t\t\t} else if (type == 'SLB') {\n\t\t\t\tsGroup.applySGroupProp(sGroups, 'label', propertyData, true);\n\t\t\t} else if (type == 'SPL') {\n\t\t\t\tsGroup.applySGroupProp(sGroups, 'parent', propertyData, true, true);\n\t\t\t} else if (type == 'SCN') {\n\t\t\t\tsGroup.applySGroupProp(sGroups, 'connectivity', propertyData);\n\t\t\t} else if (type == 'SAL') {\n\t\t\t\tsGroup.applySGroupArrayProp(sGroups, 'atoms', propertyData, -1);\n\t\t\t} else if (type == 'SBL') {\n\t\t\t\tsGroup.applySGroupArrayProp(sGroups, 'bonds', propertyData, -1);\n\t\t\t} else if (type == 'SPA') {\n\t\t\t\tsGroup.applySGroupArrayProp(sGroups, 'patoms', propertyData, -1);\n\t\t\t} else if (type == 'SMT') {\n\t\t\t\tvar sid = utils.parseDecimalInt(propertyData.slice(0, 4)) - 1;\n\t\t\t\tsGroups[sid].data.subscript = propertyData.slice(4).trim();\n\t\t\t} else if (type == 'SDT') {\n\t\t\t\tsGroup.applyDataSGroupDesc(sGroups, propertyData);\n\t\t\t} else if (type == 'SDD') {\n\t\t\t\tsGroup.applyDataSGroupInfoLine(sGroups, propertyData);\n\t\t\t} else if (type == 'SCD') {\n\t\t\t\tsGroup.applyDataSGroupDataLine(sGroups, propertyData, false);\n\t\t\t} else if (type == 'SED') {\n\t\t\t\tsGroup.applyDataSGroupDataLine(sGroups, propertyData, true);\n\t\t\t}\n\t\t}\n\t\t++shift;\n\t}\n\treturn props;\n}\n\n/**\n * @param atoms { Pool }\n * @param values { Pool }\n * @param propId { string }\n */\nfunction applyAtomProp(atoms, values, propId) {\n\t/* reader */\n\tvalues.forEach((propVal, aid) => {\n\t\tatoms.get(aid)[propId] = propVal;\n\t});\n}\n\nfunction parseCTabV2000(ctabLines, countsSplit) { // eslint-disable-line max-statements\n\t/* reader */\n\tconst ctab = new Struct();\n\tlet i;\n\tconst atomCount = utils.parseDecimalInt(countsSplit[0]);\n\tconst bondCount = utils.parseDecimalInt(countsSplit[1]);\n\tconst atomListCount = utils.parseDecimalInt(countsSplit[2]);\n\tctab.isChiral = !ctab.isChiral ? utils.parseDecimalInt(countsSplit[4]) !== 0 : true;\n\tconst stextLinesCount = utils.parseDecimalInt(countsSplit[5]);\n\tconst propertyLinesCount = utils.parseDecimalInt(countsSplit[10]);\n\n\tlet shift = 0;\n\tconst atomLines = ctabLines.slice(shift, shift + atomCount);\n\tshift += atomCount;\n\tconst bondLines = ctabLines.slice(shift, shift + bondCount);\n\tshift += bondCount;\n\tconst atomListLines = ctabLines.slice(shift, shift + atomListCount);\n\tshift += atomListCount + stextLinesCount;\n\n\tconst atoms = atomLines.map(parseAtomLine);\n\tfor (i = 0; i < atoms.length; ++i)\n\t\tctab.atoms.add(atoms[i]);\n\tconst bonds = bondLines.map(parseBondLine);\n\tfor (i = 0; i < bonds.length; ++i)\n\t\tctab.bonds.add(bonds[i]);\n\n\tconst atomLists = atomListLines.map(parseAtomListLine);\n\tatomLists.forEach((pair) => {\n\t\tctab.atoms.get(pair.aid).atomList = pair.atomList;\n\t\tctab.atoms.get(pair.aid).label = 'L#';\n\t});\n\n\tconst sGroups = {};\n\tconst rLogic = {};\n\tconst props = parsePropertyLines(ctab, ctabLines, shift,\n\t\tMath.min(ctabLines.length, shift + propertyLinesCount), sGroups, rLogic);\n\tprops.forEach((values, propId) => {\n\t\tapplyAtomProp(ctab.atoms, values, propId);\n\t});\n\n\tconst atomMap = {};\n\tlet sid;\n\tfor (sid in sGroups) {\n\t\tconst sg = sGroups[sid];\n\t\tif (sg.type === 'DAT' && sg.atoms.length === 0) {\n\t\t\tconst parent = sGroups[sid].parent;\n\t\t\tif (parent >= 0) {\n\t\t\t\tconst psg = sGroups[parent - 1];\n\t\t\t\tif (psg.type === 'GEN')\n\t\t\t\t\tsg.atoms = [].slice.call(psg.atoms);\n\t\t\t}\n\t\t}\n\t}\n\tfor (sid in sGroups)\n\t\tsGroup.loadSGroup(ctab, sGroups[sid], atomMap);\n\tconst emptyGroups = [];\n\tfor (sid in sGroups) { // TODO: why do we need that?\n\t\tSGroup.filter(ctab, sGroups[sid], atomMap);\n\t\tif (sGroups[sid].atoms.length === 0 && !sGroups[sid].allAtoms)\n\t\t\temptyGroups.push(+sid);\n\t}\n\tfor (i = 0; i < emptyGroups.length; ++i) {\n\t\tctab.sGroupForest.remove(emptyGroups[i]);\n\t\tctab.sgroups.delete(emptyGroups[i]);\n\t}\n\tfor (const id in rLogic) {\n\t\tconst rgid = parseInt(id, 10);\n\t\tctab.rgroups.set(rgid, new RGroup(rLogic[rgid]));\n\t}\n\n\treturn ctab;\n}\n\nfunction parseRg2000(/* string[] */ ctabLines) /* Struct */ { // eslint-disable-line max-statements\n\tctabLines = ctabLines.slice(7);\n\tif (ctabLines[0].trim() !== '$CTAB')\n\t\tthrow new Error('RGFile format invalid');\n\tvar i = 1;\n\twhile (ctabLines[i].charAt(0) !== '$') i++;\n\tif (ctabLines[i].trim() !== '$END CTAB')\n\t\tthrow new Error('RGFile format invalid');\n\tvar coreLines = ctabLines.slice(1, i);\n\tctabLines = ctabLines.slice(i + 1);\n\tvar fragmentLines = {};\n\twhile (true) { // eslint-disable-line no-constant-condition\n\t\tif (ctabLines.length === 0)\n\t\t\tthrow new Error('Unexpected end of file');\n\t\tvar line = ctabLines[0].trim();\n\t\tif (line === '$END MOL') {\n\t\t\tctabLines = ctabLines.slice(1);\n\t\t\tbreak;\n\t\t}\n\t\tif (line !== '$RGP')\n\t\t\tthrow new Error('RGFile format invalid');\n\n\t\tconst rgid = parseInt(ctabLines[1].trim(), 10);\n\t\tfragmentLines[rgid] = [];\n\t\tctabLines = ctabLines.slice(2);\n\t\twhile (true) { // eslint-disable-line no-constant-condition\n\t\t\tif (ctabLines.length === 0)\n\t\t\t\tthrow new Error('Unexpected end of file');\n\t\t\tline = ctabLines[0].trim();\n\t\t\tif (line === '$END RGP') {\n\t\t\t\tctabLines = ctabLines.slice(1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (line !== '$CTAB')\n\t\t\t\tthrow new Error('RGFile format invalid');\n\t\t\ti = 1;\n\t\t\twhile (ctabLines[i].charAt(0) !== '$') i++;\n\t\t\tif (ctabLines[i].trim() !== '$END CTAB')\n\t\t\t\tthrow new Error('RGFile format invalid');\n\t\t\tfragmentLines[rgid].push(ctabLines.slice(1, i));\n\t\t\tctabLines = ctabLines.slice(i + 1);\n\t\t}\n\t}\n\n\tvar core = parseCTab(coreLines);\n\tvar frag = {};\n\tif (loadRGroupFragments) {\n\t\tfor (var strId in fragmentLines) {\n\t\t\tconst id = parseInt(strId, 10);\n\t\t\tfrag[id] = [];\n\t\t\tfor (var j = 0; j < fragmentLines[id].length; ++j)\n\t\t\t\tfrag[id].push(parseCTab(fragmentLines[id][j]));\n\t\t}\n\t}\n\treturn rgMerge(core, frag);\n}\n\nfunction parseRxn2000(/* string[] */ ctabLines, shouldReactionRelayout) /* Struct */ { // eslint-disable-line max-statements\n\t/* reader */\n\tctabLines = ctabLines.slice(4);\n\tvar countsSplit = utils.partitionLine(ctabLines[0], utils.fmtInfo.rxnItemsPartition);\n\tvar nReactants = countsSplit[0] - 0,\n\t\tnProducts = countsSplit[1] - 0,\n\t\tnAgents = countsSplit[2] - 0;\n\tctabLines = ctabLines.slice(1); // consume counts line\n\n\tvar mols = [];\n\twhile (ctabLines.length > 0 && ctabLines[0].substr(0, 4) == '$MOL') {\n\t\tctabLines = ctabLines.slice(1);\n\t\tvar n = 0;\n\t\twhile (n < ctabLines.length && ctabLines[n].substr(0, 4) != '$MOL') n++;\n\n\t\tvar lines = ctabLines.slice(0, n);\n\t\tvar struct;\n\t\tif (lines[0].search('\\\\$MDL') == 0) {\n\t\t\tstruct = parseRg2000(lines);\n\t\t} else {\n\t\t\tstruct = parseCTab(lines.slice(3));\n\t\t\tstruct.name = lines[0].trim();\n\t\t}\n\t\tmols.push(struct);\n\t\tctabLines = ctabLines.slice(n);\n\t}\n\n\treturn utils.rxnMerge(mols, nReactants, nProducts, nAgents, shouldReactionRelayout);\n}\n\nfunction parseCTab(/* string */ ctabLines) /* Struct */ {\n\t/* reader */\n\tvar countsSplit = utils.partitionLine(ctabLines[0], utils.fmtInfo.countsLinePartition);\n\tctabLines = ctabLines.slice(1);\n\treturn parseCTabV2000(ctabLines, countsSplit);\n}\n\nfunction rgMerge(scaffold, rgroups) /* Struct */ {\n\t/* reader */\n\tconst ret = new Struct();\n\n\tscaffold.mergeInto(ret, null, null, false, true);\n\n\tObject.keys(rgroups).forEach((id) => {\n\t\tconst rgid = parseInt(id, 10);\n\n\t\tfor (let j = 0; j < rgroups[rgid].length; ++j) {\n\t\t\tconst ctab = rgroups[rgid][j];\n\t\t\tctab.rgroups.set(rgid, new RGroup());\n\t\t\tconst frag = {};\n\t\t\tconst frid = ctab.frags.add(frag);\n\t\t\tctab.rgroups.get(rgid).frags.add(frid);\n\t\t\tctab.atoms.forEach((atom) => {\n\t\t\t\tatom.fragment = frid;\n\t\t\t});\n\t\t\tctab.mergeInto(ret);\n\t\t}\n\t});\n\n\treturn ret;\n}\n\nfunction labelsListToIds(labels) {\n\t/* reader */\n\tvar ids = [];\n\tfor (var i = 0; i < labels.length; ++i)\n\t\tids.push(element.map[labels[i].trim()]);\n\treturn ids;\n}\n\n/**\n * @param hdr\n * @param lst\n * @returns { Pool }\n */\nfunction parsePropertyLineAtomList(hdr, lst) {\n\t/* reader */\n\tvar aid = utils.parseDecimalInt(hdr[1]) - 1;\n\tvar count = utils.parseDecimalInt(hdr[2]);\n\tvar notList = hdr[4].trim() == 'T';\n\tvar ids = labelsListToIds(lst.slice(0, count));\n\tvar ret = new Pool();\n\tret.set(aid, new AtomList({\n\t\tnotList,\n\t\tids\n\t}));\n\treturn ret;\n}\n\nexport default {\n\tparseCTabV2000,\n\tparseRg2000,\n\tparseRxn2000\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\n\nimport element from './../element';\nimport Struct, { Atom, AtomList, Bond, RGroup, SGroup } from './../struct/index';\n\nimport sGroup from './parseSGroup';\nimport utils from './utils';\n\nfunction parseAtomLineV3000(line) { // eslint-disable-line max-statements\n\t/* reader */\n\tvar split, subsplit, key, value, i;\n\tsplit = spaceparsplit(line);\n\tvar params = {\n\t\tpp: new Vec2(parseFloat(split[2]), -parseFloat(split[3]), parseFloat(split[4])),\n\t\taam: split[5].trim()\n\t};\n\tvar label = split[1].trim();\n\tif (label.charAt(0) == '\"' && label.charAt(label.length - 1) == '\"')\n\t\tlabel = label.substr(1, label.length - 2); // strip qutation marks\n\tif (label.charAt(label.length - 1) == ']') { // assume atom list\n\t\tlabel = label.substr(0, label.length - 1); // remove ']'\n\t\tvar atomListParams = {};\n\t\tatomListParams.notList = false;\n\t\tif (label.substr(0, 5) == 'NOT [') {\n\t\t\tatomListParams.notList = true;\n\t\t\tlabel = label.substr(5); // remove 'NOT ['\n\t\t} else if (label.charAt(0) != '[') {\n\t\t\tthrow new Error('Error: atom list expected, found \\'' + label + '\\'');\n\t\t} else {\n\t\t\tlabel = label.substr(1); // remove '['\n\t\t}\n\t\tatomListParams.ids = labelsListToIds(label.split(','));\n\t\tparams['atomList'] = new AtomList(atomListParams);\n\t\tparams['label'] = 'L#';\n\t} else {\n\t\tparams['label'] = label;\n\t}\n\tsplit.splice(0, 6);\n\tfor (i = 0; i < split.length; ++i) {\n\t\tsubsplit = splitonce(split[i], '=');\n\t\tkey = subsplit[0];\n\t\tvalue = subsplit[1];\n\t\tif (key in utils.fmtInfo.v30atomPropMap) {\n\t\t\tvar ival = utils.parseDecimalInt(value);\n\t\t\tif (key == 'VAL') {\n\t\t\t\tif (ival == 0)\n\t\t\t\t\tcontinue; // eslint-disable-line no-continue\n\t\t\t\tif (ival == -1)\n\t\t\t\t\tival = 0;\n\t\t\t}\n\t\t\tparams[utils.fmtInfo.v30atomPropMap[key]] = ival;\n\t\t} else if (key == 'RGROUPS') {\n\t\t\tvalue = value.trim().substr(1, value.length - 2);\n\t\t\tvar rgrsplit = value.split(' ').slice(1);\n\t\t\tparams.rglabel = 0;\n\t\t\tfor (var j = 0; j < rgrsplit.length; ++j)\n\t\t\t\tparams.rglabel |= 1 << (rgrsplit[j] - 1);\n\t\t} else if (key == 'ATTCHPT') {\n\t\t\tparams.attpnt = value.trim() - 0;\n\t\t}\n\t}\n\n\treturn new Atom(params);\n}\n\nfunction parseBondLineV3000(line) {\n\t/* reader */\n\tvar split, subsplit, key, value, i;\n\tsplit = spaceparsplit(line);\n\tvar params = {\n\t\tbegin: utils.parseDecimalInt(split[2]) - 1,\n\t\tend: utils.parseDecimalInt(split[3]) - 1,\n\t\ttype: utils.fmtInfo.bondTypeMap[utils.parseDecimalInt(split[1])]\n\t};\n\tsplit.splice(0, 4);\n\tfor (i = 0; i < split.length; ++i) {\n\t\tsubsplit = splitonce(split[i], '=');\n\t\tkey = subsplit[0];\n\t\tvalue = subsplit[1];\n\t\tif (key == 'CFG') {\n\t\t\tparams.stereo = utils.fmtInfo.v30bondStereoMap[utils.parseDecimalInt(value)];\n\t\t\tif (params.type == Bond.PATTERN.TYPE.DOUBLE && params.stereo == Bond.PATTERN.STEREO.EITHER)\n\t\t\t\tparams.stereo = Bond.PATTERN.STEREO.CIS_TRANS;\n\t\t} else if (key == 'TOPO') {\n\t\t\tparams.topology = utils.fmtInfo.bondTopologyMap[utils.parseDecimalInt(value)];\n\t\t} else if (key == 'RXCTR') {\n\t\t\tparams.reactingCenterStatus = utils.parseDecimalInt(value);\n\t\t} else if (key == 'STBOX') {\n\t\t\tparams.stereoCare = utils.parseDecimalInt(value);\n\t\t}\n\t}\n\treturn new Bond(params);\n}\n\nfunction v3000parseCollection(ctab, ctabLines, shift) {\n\t/* reader */\n\tshift++;\n\twhile (ctabLines[shift].trim() != 'M V30 END COLLECTION')\n\t\tshift++;\n\tshift++;\n\treturn shift;\n}\n\nfunction v3000parseSGroup(ctab, ctabLines, sgroups, atomMap, shift) { // eslint-disable-line max-params, max-statements\n\t/* reader */\n\tvar line = '';\n\tshift++;\n\twhile (shift < ctabLines.length) {\n\t\tline = stripV30(ctabLines[shift++]).trim();\n\t\tif (line.trim() == 'END SGROUP')\n\t\t\treturn shift;\n\t\twhile (line.charAt(line.length - 1) == '-')\n\t\t\tline = (line.substr(0, line.length - 1) + stripV30(ctabLines[shift++])).trim();\n\t\tvar split = splitSGroupDef(line);\n\t\tvar type = split[1];\n\t\tvar sg = new SGroup(type);\n\t\tsg.number = split[0] - 0;\n\t\tsg.type = type;\n\t\tsg.label = split[2] - 0;\n\t\tsgroups[sg.number] = sg;\n\t\tvar props = {};\n\t\tfor (var i = 3; i < split.length; ++i) {\n\t\t\tvar subsplit = splitonce(split[i], '=');\n\t\t\tif (subsplit.length != 2)\n\t\t\t\tthrow new Error('A record of form AAA=BBB or AAA=(...) expected, got \\'' + split[i] + '\\'');\n\t\t\tvar name = subsplit[0];\n\t\t\tif (!(name in props))\n\t\t\t\tprops[name] = [];\n\t\t\tprops[name].push(subsplit[1]);\n\t\t}\n\t\tsg.atoms = parseBracedNumberList(props['ATOMS'][0], -1);\n\t\tif (props['PATOMS'])\n\t\t\tsg.patoms = parseBracedNumberList(props['PATOMS'][0], -1);\n\t\tsg.bonds = props['BONDS'] ? parseBracedNumberList(props['BONDS'][0], -1) : [];\n\t\tvar brkxyzStrs = props['BRKXYZ'];\n\t\tsg.brkxyz = [];\n\t\tif (brkxyzStrs) {\n\t\t\tfor (var j = 0; j < brkxyzStrs.length; ++j)\n\t\t\t\tsg.brkxyz.push(parseBracedNumberList(brkxyzStrs[j]));\n\t\t}\n\t\tif (props['MULT'])\n\t\t\tsg.data.subscript = props['MULT'][0] - 0;\n\t\tif (props['LABEL'])\n\t\t\tsg.data.subscript = props['LABEL'][0].trim();\n\t\tif (props['CONNECT'])\n\t\t\tsg.data.connectivity = props['CONNECT'][0].toLowerCase();\n\t\tif (props['FIELDDISP'])\n\t\t\tsGroup.applyDataSGroupInfo(sg, stripQuotes(props['FIELDDISP'][0]));\n\t\tif (props['FIELDDATA'])\n\t\t\tsGroup.applyDataSGroupData(sg, props['FIELDDATA'][0], true);\n\t\tif (props['FIELDNAME'])\n\t\t\tsGroup.applyDataSGroupName(sg, props['FIELDNAME'][0]);\n\t\tif (props['QUERYTYPE'])\n\t\t\tsGroup.applyDataSGroupQuery(sg, props['QUERYTYPE'][0]);\n\t\tif (props['QUERYOP'])\n\t\t\tsGroup.applyDataSGroupQueryOp(sg, props['QUERYOP'][0]);\n\t\tsGroup.loadSGroup(ctab, sg, atomMap);\n\t}\n\tthrow new Error('S-group declaration incomplete.');\n}\n\nfunction parseCTabV3000(ctabLines, norgroups) { // eslint-disable-line max-statements\n\t/* reader */\n\tvar ctab = new Struct();\n\n\tvar shift = 0;\n\tif (ctabLines[shift++].trim() != 'M V30 BEGIN CTAB')\n\t\tthrow Error('CTAB V3000 invalid');\n\tif (ctabLines[shift].slice(0, 13) != 'M V30 COUNTS')\n\t\tthrow Error('CTAB V3000 invalid');\n\tvar vals = ctabLines[shift].slice(14).split(' ');\n\tctab.isChiral = (utils.parseDecimalInt(vals[4]) == 1);\n\tshift++;\n\n\tif (ctabLines[shift].trim() == 'M V30 BEGIN ATOM') {\n\t\tshift++;\n\t\tvar line;\n\t\twhile (shift < ctabLines.length) {\n\t\t\tline = stripV30(ctabLines[shift++]).trim();\n\t\t\tif (line == 'END ATOM')\n\t\t\t\tbreak;\n\t\t\twhile (line.charAt(line.length - 1) == '-')\n\t\t\t\tline = (line.substring(0, line.length - 1) + stripV30(ctabLines[shift++])).trim();\n\t\t\tctab.atoms.add(parseAtomLineV3000(line));\n\t\t}\n\n\t\tif (ctabLines[shift].trim() == 'M V30 BEGIN BOND') {\n\t\t\tshift++;\n\t\t\twhile (shift < ctabLines.length) {\n\t\t\t\tline = stripV30(ctabLines[shift++]).trim();\n\t\t\t\tif (line == 'END BOND')\n\t\t\t\t\tbreak;\n\t\t\t\twhile (line.charAt(line.length - 1) == '-')\n\t\t\t\t\tline = (line.substring(0, line.length - 1) + stripV30(ctabLines[shift++])).trim();\n\t\t\t\tctab.bonds.add(parseBondLineV3000(line));\n\t\t\t}\n\t\t}\n\n\t\t// TODO: let sections follow in arbitrary order\n\t\tvar sgroups = {};\n\t\tvar atomMap = {};\n\n\t\twhile (ctabLines[shift].trim() != 'M V30 END CTAB') {\n\t\t\tif (ctabLines[shift].trim() == 'M V30 BEGIN COLLECTION')\n\t\t\t// TODO: read collection information\n\t\t\t\tshift = v3000parseCollection(ctab, ctabLines, shift);\n\t\t\telse if (ctabLines[shift].trim() == 'M V30 BEGIN SGROUP')\n\t\t\t\tshift = v3000parseSGroup(ctab, ctabLines, sgroups, atomMap, shift);\n\t\t\telse\n\t\t\t\tthrow Error('CTAB V3000 invalid');\n\t\t}\n\t}\n\tif (ctabLines[shift++].trim() != 'M V30 END CTAB')\n\t\tthrow Error('CTAB V3000 invalid');\n\n\tif (!norgroups)\n\t\treadRGroups3000(ctab, ctabLines.slice(shift));\n\n\treturn ctab;\n}\n\nfunction readRGroups3000(ctab, /* string */ ctabLines) /* Struct */ { // eslint-disable-line max-statements\n\t/* reader */\n\tvar rfrags = {};\n\tvar rLogic = {};\n\tvar shift = 0;\n\twhile (shift < ctabLines.length && ctabLines[shift].search('M V30 BEGIN RGROUP') == 0) {\n\t\tvar id = ctabLines[shift++].split(' ').pop();\n\t\trfrags[id] = [];\n\t\trLogic[id] = {};\n\t\twhile (true) { // eslint-disable-line no-constant-condition\n\t\t\tvar line = ctabLines[shift].trim();\n\t\t\tif (line.search('M V30 RLOGIC') == 0) {\n\t\t\t\tline = line.slice(13);\n\t\t\t\tvar rlsplit = line.trim().split(/\\s+/g);\n\t\t\t\tvar iii = utils.parseDecimalInt(rlsplit[0]);\n\t\t\t\tvar hhh = utils.parseDecimalInt(rlsplit[1]);\n\t\t\t\tvar ooo = rlsplit.slice(2).join(' ');\n\t\t\t\tvar logic = {};\n\t\t\t\tif (iii > 0)\n\t\t\t\t\tlogic.ifthen = iii;\n\t\t\t\tlogic.resth = hhh == 1;\n\t\t\t\tlogic.range = ooo;\n\t\t\t\trLogic[id] = logic;\n\t\t\t\tshift++;\n\t\t\t\tcontinue; // eslint-disable-line no-continue\n\t\t\t}\n\t\t\tif (line != 'M V30 BEGIN CTAB')\n\t\t\t\tthrow Error('CTAB V3000 invalid');\n\t\t\tfor (var i = 0; i < ctabLines.length; ++i) {\n\t\t\t\tif (ctabLines[shift + i].trim() == 'M V30 END CTAB')\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar lines = ctabLines.slice(shift, shift + i + 1);\n\t\t\tvar rfrag = parseCTabV3000(lines, true);\n\t\t\trfrags[id].push(rfrag);\n\t\t\tshift = shift + i + 1;\n\t\t\tif (ctabLines[shift].trim() == 'M V30 END RGROUP') {\n\t\t\t\tshift++;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tObject.keys(rfrags).forEach((rgid) => {\n\t\trfrags[rgid].forEach((rg) => {\n\t\t\trg.rgroups.set(rgid, new RGroup(rLogic[rgid]));\n\t\t\tconst frid = rg.frags.add({});\n\t\t\trg.rgroups.get(rgid).frags.add(frid);\n\t\t\trg.atoms.forEach((atom) => {\n\t\t\t\tatom.fragment = frid;\n\t\t\t});\n\t\t\trg.mergeInto(ctab);\n\t\t});\n\t});\n}\n\nfunction parseRxn3000(/* string[] */ ctabLines, shouldReactionRelayout) /* Struct */ { // eslint-disable-line max-statements\n\t/* reader */\n\tctabLines = ctabLines.slice(4);\n\tvar countsSplit = ctabLines[0].split(/\\s+/g).slice(3);\n\tvar nReactants = countsSplit[0] - 0,\n\t\tnProducts = countsSplit[1] - 0,\n\t\tnAgents = countsSplit.length > 2 ? countsSplit[2] - 0 : 0;\n\n\tfunction findCtabEnd(i) {\n\t\tfor (var j = i; j < ctabLines.length; ++j) {\n\t\t\tif (ctabLines[j].trim() == 'M V30 END CTAB')\n\t\t\t\treturn j;\n\t\t}\n\n\t\treturn console.error('CTab format invalid');\n\t}\n\n\tfunction findRGroupEnd(i) {\n\t\tfor (var j = i; j < ctabLines.length; ++j) {\n\t\t\tif (ctabLines[j].trim() == 'M V30 END RGROUP')\n\t\t\t\treturn j;\n\t\t}\n\t\treturn console.error('CTab format invalid');\n\t}\n\n\tvar molLinesReactants = [];\n\tvar molLinesProducts = [];\n\tvar current = null;\n\tvar rGroups = [];\n\tfor (var i = 0; i < ctabLines.length; ++i) {\n\t\tvar line = ctabLines[i].trim();\n\t\tvar j;\n\n\t\tif (line.startsWith('M V30 COUNTS')) {\n\t\t\t// do nothing\n\t\t} else if (line == 'M END') {\n\t\t\tbreak; // stop reading\n\t\t} else if (line == 'M V30 BEGIN PRODUCT') {\n\t\t\tconsole.assert(current == null, 'CTab format invalid');\n\t\t\tcurrent = molLinesProducts;\n\t\t} else if (line == 'M V30 END PRODUCT') {\n\t\t\tconsole.assert(current === molLinesProducts, 'CTab format invalid');\n\t\t\tcurrent = null;\n\t\t} else if (line == 'M V30 BEGIN REACTANT') {\n\t\t\tconsole.assert(current == null, 'CTab format invalid');\n\t\t\tcurrent = molLinesReactants;\n\t\t} else if (line == 'M V30 END REACTANT') {\n\t\t\tconsole.assert(current === molLinesReactants, 'CTab format invalid');\n\t\t\tcurrent = null;\n\t\t} else if (line.startsWith('M V30 BEGIN RGROUP')) {\n\t\t\tconsole.assert(current == null, 'CTab format invalid');\n\t\t\tj = findRGroupEnd(i);\n\t\t\trGroups.push(ctabLines.slice(i, j + 1));\n\t\t\ti = j;\n\t\t} else if (line == 'M V30 BEGIN CTAB') {\n\t\t\tj = findCtabEnd(i);\n\t\t\tcurrent.push(ctabLines.slice(i, j + 1));\n\t\t\ti = j;\n\t\t} else {\n\t\t\tthrow new Error('line unrecognized: ' + line);\n\t\t}\n\t}\n\tvar mols = [];\n\tvar molLines = molLinesReactants.concat(molLinesProducts);\n\tfor (j = 0; j < molLines.length; ++j) {\n\t\tvar mol = parseCTabV3000(molLines[j], countsSplit);\n\t\tmols.push(mol);\n\t}\n\tvar ctab = utils.rxnMerge(mols, nReactants, nProducts, nAgents, shouldReactionRelayout);\n\n\treadRGroups3000(ctab, (function (array) {\n\t\tvar res = [];\n\t\tfor (var k = 0; k < array.length; ++k)\n\t\t\tres = res.concat(array[k]);\n\t\treturn res;\n\t}(rGroups)));\n\n\treturn ctab;\n}\n\n// split a line by spaces outside parentheses\nfunction spaceparsplit(line) { // eslint-disable-line max-statements\n\t/* reader */\n\tvar split = [];\n\tvar pc = 0;\n\tvar c;\n\tvar i;\n\tvar i0 = -1;\n\tvar quoted = false;\n\n\tfor (i = 0; i < line.length; ++i) {\n\t\tc = line[i];\n\t\tif (c == '(')\n\t\t\tpc++;\n\t\telse if (c == ')')\n\t\t\tpc--;\n\t\tif (c == '\"')\n\t\t\tquoted = !quoted;\n\t\tif (!quoted && line[i] == ' ' && pc == 0) {\n\t\t\tif (i > i0 + 1)\n\t\t\t\tsplit.push(line.slice(i0 + 1, i));\n\t\t\ti0 = i;\n\t\t}\n\t}\n\tif (i > i0 + 1)\n\t\tsplit.push(line.slice(i0 + 1, i));\n\treturn split;\n}\n\n// utils\nfunction stripQuotes(str) {\n\tif (str[0] === '\"' && str[str.length - 1] === '\"')\n\t\treturn str.substr(1, str.length - 2);\n\treturn str;\n}\n\nfunction splitonce(line, delim) {\n\t/* reader */\n\tvar p = line.indexOf(delim);\n\treturn [line.slice(0, p), line.slice(p + 1)];\n}\n\nfunction splitSGroupDef(line) { // eslint-disable-line max-statements\n\t/* reader */\n\tvar split = [];\n\tvar braceBalance = 0;\n\tvar quoted = false;\n\tfor (var i = 0; i < line.length; ++i) {\n\t\tvar c = line.charAt(i);\n\t\tif (c == '\"') {\n\t\t\tquoted = !quoted;\n\t\t} else if (!quoted) {\n\t\t\tif (c == '(') {\n\t\t\t\tbraceBalance++;\n\t\t\t} else if (c == ')') {\n\t\t\t\tbraceBalance--;\n\t\t\t} else if (c == ' ' && braceBalance == 0) {\n\t\t\t\tsplit.push(line.slice(0, i));\n\t\t\t\tline = line.slice(i + 1).trim();\n\t\t\t\ti = 0;\n\t\t\t}\n\t\t}\n\t}\n\tif (braceBalance != 0)\n\t\tthrow new Error('Brace balance broken. S-group properies invalid!');\n\tif (line.length > 0)\n\t\tsplit.push(line.trim());\n\treturn split;\n}\n\nfunction parseBracedNumberList(line, shift) {\n\t/* reader */\n\tif (!line)\n\t\treturn null;\n\tvar list = [];\n\tline = line.trim();\n\tline = line.substr(1, line.length - 2);\n\tvar split = line.split(' ');\n\tshift = shift || 0;\n\n\tfor (var i = 1; i < split.length; ++i) {\n\t\tvar value = parseInt(split[i]);\n\t\tif (!isNaN(value)) // eslint-disable-line\n\t\t\tlist.push(value + shift);\n\t}\n\n\treturn list;\n}\n\nfunction stripV30(line) {\n\t/* reader */\n\tif (line.slice(0, 7) != 'M V30 ')\n\t\tthrow new Error('Prefix invalid');\n\treturn line.slice(7);\n}\n\nfunction labelsListToIds(labels) {\n\t/* reader */\n\tvar ids = [];\n\tfor (var i = 0; i < labels.length; ++i)\n\t\tids.push(element.map[labels[i].trim()]);\n\treturn ids;\n}\n\nexport default {\n\tparseCTabV3000,\n\treadRGroups3000,\n\tparseRxn3000\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport molfile from './molfile';\n\nfunction parse(str, options) {\n\tvar regexp = /^[^]+?\\$\\$\\$\\$$/gm;\n\tvar m, chunk;\n\tvar result = [];\n\twhile ((m = regexp.exec(str)) !== null) {\n\t\tchunk = m[0].replace(/\\r/g, ''); // TODO: normalize newline?\n\t\tchunk = chunk.trim();\n\t\tvar end = chunk.indexOf('M END');\n\t\tif (end !== -1) {\n\t\t\tvar item = {};\n\t\t\tvar propChunks = chunk.substr(end + 7).trim().split(/^$\\n?/m);\n\n\t\t\titem.struct = molfile.parse(chunk.substring(0, end + 6), options);\n\t\t\titem.props = propChunks.reduce((props, pc) => {\n\t\t\t\tvar m = pc.match(/^> [ \\d]*<(\\S+)>/);\n\t\t\t\tif (m) {\n\t\t\t\t\tvar field = m[1];\n\t\t\t\t\tvar value = pc.split('\\n')[1].trim();\n\t\t\t\t\tprops[field] = isFinite(value) ? +value : value; // eslint-disable-line\n\t\t\t\t}\n\t\t\t\treturn props;\n\t\t\t}, {});\n\n\t\t\tresult.push(item);\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction stringify(items, options) {\n\treturn items.reduce((res, item) => {\n\t\tres += molfile.stringify(item.struct, options);\n\n\t\tObject.keys(item.props).forEach((prop) => {\n\t\t\tres += '> <' + prop + '>\\n';\n\t\t\tres += item.props[prop] + '\\n\\n';\n\t\t});\n\n\t\treturn res + '\\$\\$\\$\\$';\n\t}, '');\n}\n\nexport default {\n\tstringify,\n\tparse\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Pool from '../../util/pool';\nimport Vec2 from '../../util/vec2';\n\nimport { Bond } from '../struct';\n\nfunction CisTrans(mol, neighborsFunc, context) {\n\tthis.molecule = mol;\n\tthis.bonds = new Pool();\n\tthis.getNeighbors = neighborsFunc;\n\tthis.context = context;\n}\n\nCisTrans.PARITY = {\n\tNONE: 0,\n\tCIS: 1,\n\tTRANS: 2\n};\n\nCisTrans.prototype.each = function (func) {\n\tthis.bonds.forEach(func);\n};\n\nCisTrans.prototype.getParity = function (idx) {\n\treturn this.bonds.get(idx).parity;\n};\n\nCisTrans.prototype.getSubstituents = function (idx) {\n\treturn this.bonds.get(idx).substituents;\n};\n\nCisTrans.prototype.sameside = function (beg, end, neiBeg, neiEnd) {\n\tvar diff = Vec2.diff(beg, end);\n\tvar norm = new Vec2(-diff.y, diff.x);\n\n\tif (!norm.normalize())\n\t\treturn 0;\n\n\tvar normBeg = Vec2.diff(neiBeg, beg);\n\tvar normEnd = Vec2.diff(neiEnd, end);\n\n\tif (!normBeg.normalize())\n\t\treturn 0;\n\tif (!normEnd.normalize())\n\t\treturn 0;\n\n\tvar prodBeg = Vec2.dot(normBeg, norm);\n\tvar prodEnd = Vec2.dot(normEnd, norm);\n\n\tif (Math.abs(prodBeg) < 0.001 || Math.abs(prodEnd) < 0.001)\n\t\treturn 0;\n\n\treturn (prodBeg * prodEnd > 0) ? 1 : -1;\n};\n\nCisTrans.prototype.samesides = function (iBeg, iEnd, iNeiBeg, iNeiEnd) {\n\treturn this.sameside(this.molecule.atoms.get(iBeg).pp, this.molecule.atoms.get(iEnd).pp,\n\t\tthis.molecule.atoms.get(iNeiBeg).pp, this.molecule.atoms.get(iNeiEnd).pp);\n};\n\nCisTrans.prototype.sortSubstituents = function (substituents) { // eslint-disable-line max-statements\n\tvar h0 = this.molecule.atoms.get(substituents[0]).pureHydrogen();\n\tvar h1 = substituents[1] < 0 || this.molecule.atoms.get(substituents[1]).pureHydrogen();\n\tvar h2 = this.molecule.atoms.get(substituents[2]).pureHydrogen();\n\tvar h3 = substituents[3] < 0 || this.molecule.atoms.get(substituents[3]).pureHydrogen();\n\n\tif (h0 && h1)\n\t\treturn false;\n\tif (h2 && h3)\n\t\treturn false;\n\n\tif (h1) {\n\t\tsubstituents[1] = -1;\n\t} else if (h0) {\n\t\tsubstituents[0] = substituents[1];\n\t\tsubstituents[1] = -1;\n\t} else if (substituents[0] > substituents[1]) {\n\t\tswap(substituents, 0, 1);\n\t}\n\n\tif (h3) {\n\t\tsubstituents[3] = -1;\n\t} else if (h2) {\n\t\tsubstituents[2] = substituents[3];\n\t\tsubstituents[3] = -1;\n\t} else if (substituents[2] > substituents[3]) {\n\t\tswap(substituents, 2, 3);\n\t}\n\n\treturn true;\n};\n\nCisTrans.prototype.isGeomStereoBond = function (bondIdx, substituents) { // eslint-disable-line max-statements\n\t// it must be [C,N,Si]=[C,N,Si] bond\n\tvar bond = this.molecule.bonds.get(bondIdx);\n\n\tif (bond.type != Bond.PATTERN.TYPE.DOUBLE)\n\t\treturn false;\n\n\tvar label1 = this.molecule.atoms.get(bond.begin).label;\n\tvar label2 = this.molecule.atoms.get(bond.end).label;\n\n\tif (label1 != 'C' && label1 != 'N' && label1 != 'Si' && label1 != 'Ge')\n\t\treturn false;\n\tif (label2 != 'C' && label2 != 'N' && label2 != 'Si' && label2 != 'Ge')\n\t\treturn false;\n\n\t// the atoms should have 1 or 2 single bonds\n\t// (apart from the double bond under consideration)\n\tvar neiBegin = this.getNeighbors.call(this.context, bond.begin);\n\tvar neiЕnd = this.getNeighbors.call(this.context, bond.end);\n\n\tif (\n\t\tneiBegin.length < 2 || neiBegin.length > 3 ||\n\t\tneiЕnd.length < 2 || neiЕnd.length > 3\n\t)\n\t\treturn false;\n\n\tsubstituents[0] = -1;\n\tsubstituents[1] = -1;\n\tsubstituents[2] = -1;\n\tsubstituents[3] = -1;\n\n\tvar i;\n\tvar nei;\n\n\tfor (i = 0; i < neiBegin.length; i++) {\n\t\tnei = neiBegin[i];\n\n\t\tif (nei.bid == bondIdx)\n\t\t\tcontinue; // eslint-disable-line no-continue\n\n\t\tif (this.molecule.bonds.get(nei.bid).type != Bond.PATTERN.TYPE.SINGLE)\n\t\t\treturn false;\n\n\t\tif (substituents[0] == -1)\n\t\t\tsubstituents[0] = nei.aid;\n\t\telse // (substituents[1] == -1)\n\t\t\tsubstituents[1] = nei.aid;\n\t}\n\n\tfor (i = 0; i < neiЕnd.length; i++) {\n\t\tnei = neiЕnd[i];\n\n\t\tif (nei.bid == bondIdx)\n\t\t\tcontinue; // eslint-disable-line no-continue\n\n\t\tif (this.molecule.bonds.get(nei.bid).type != Bond.PATTERN.TYPE.SINGLE)\n\t\t\treturn false;\n\n\t\tif (substituents[2] == -1)\n\t\t\tsubstituents[2] = nei.aid;\n\t\telse // (substituents[3] == -1)\n\t\t\tsubstituents[3] = nei.aid;\n\t}\n\n\tif (substituents[1] != -1 && this.samesides(bond.begin, bond.end, substituents[0], substituents[1]) != -1)\n\t\treturn false;\n\tif (substituents[3] != -1 && this.samesides(bond.begin, bond.end, substituents[2], substituents[3]) != -1)\n\t\treturn false;\n\n\treturn true;\n};\n\nCisTrans.prototype.build = function (excludeBonds) {\n\tthis.molecule.bonds.forEach((bond, bid) => {\n\t\tconst ct = {\n\t\t\tparity: 0,\n\t\t\tsubstituents: []\n\t\t};\n\t\tthis.bonds.set(bid, ct);\n\n\t\tif (Array.isArray(excludeBonds) && excludeBonds[bid])\n\t\t\treturn;\n\n\t\tif (!this.isGeomStereoBond(bid, ct.substituents))\n\t\t\treturn;\n\n\t\tif (!this.sortSubstituents(ct.substituents))\n\t\t\treturn;\n\n\t\tconst sign = this.samesides(bond.begin, bond.end, ct.substituents[0], ct.substituents[2]);\n\n\t\tif (sign === 1)\n\t\t\tct.parity = CisTrans.PARITY.CIS;\n\t\telse if (sign === -1)\n\t\t\tct.parity = CisTrans.PARITY.TRANS;\n\t});\n};\n\nfunction swap(arr, i1, i2) {\n\tvar tmp = arr[i1];\n\tarr[i1] = arr[i2];\n\tarr[i2] = tmp;\n}\n\nexport default CisTrans;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nfunction Dfs(mol, atomData, components, nReactants) {\n\tthis.molecule = mol;\n\tthis.atom_data = atomData;\n\tthis.components = components;\n\tthis.nComponentsInReactants = -1;\n\tthis.nReactants = nReactants;\n\n\tthis.vertices = new Array(this.molecule.atoms.size); // Minimum size\n\tthis.molecule.atoms.forEach((atom, aid) => {\n\t\tthis.vertices[aid] = new Dfs.VertexDesc();\n\t}, this);\n\n\tthis.edges = new Array(this.molecule.bonds.size); // Minimum size\n\tthis.molecule.bonds.forEach((bond, bid) => {\n\t\tthis.edges[bid] = new Dfs.EdgeDesc();\n\t}, this);\n\n\tthis.v_seq = [];\n}\n\nDfs.VertexDesc = function () {\n\tthis.dfs_state = 0; // 0 -- not on stack\n\t// 1 -- on stack\n\t// 2 -- removed from stack\n\tthis.parent_vertex = 0; // parent vertex in DFS tree\n\tthis.parent_edge = 0; // edge to parent vertex\n\tthis.branches = 0; // how many DFS branches go out from this vertex}\n};\n\nDfs.EdgeDesc = function () {\n\tthis.opening_cycles = 0; // how many cycles are\n\t// (i) starting with this edge\n\t// and (ii) ending in this edge's first vertex\n\tthis.closing_cycle = 0; // 1 if this edge closes a cycle\n};\n\nDfs.SeqElem = function (vIdx, parVertex, parEdge) {\n\tthis.idx = vIdx; // index of vertex in _graph\n\tthis.parent_vertex = parVertex; // parent vertex in DFS tree\n\tthis.parent_edge = parEdge; // edge to parent vertex\n};\n\nDfs.prototype.walk = function () { // eslint-disable-line max-statements\n\tvar vStack = [];\n\tvar i, j;\n\tvar cid = 0;\n\tvar component = 0;\n\n\twhile (true) { // eslint-disable-line no-constant-condition\n\t\tif (vStack.length < 1) {\n\t\t\tvar selected = -1;\n\n\t\t\twhile (cid < this.components.length && selected == -1) {\n\t\t\t\tselected = this.components[cid].find((aid) => {\n\t\t\t\t\tif (this.vertices[aid].dfs_state === 0) {\n\t\t\t\t\t\tselected = aid;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t\tif (selected === null) {\n\t\t\t\t\tselected = -1;\n\t\t\t\t\tcid++;\n\t\t\t\t}\n\t\t\t\tif (cid == this.nReactants)\n\t\t\t\t\tthis.nComponentsInReactants = component;\n\t\t\t}\n\t\t\tif (selected < -1) {\n\t\t\t\tthis.molecule.atoms.find((aid) => {\n\t\t\t\t\tif (this.vertices[aid].dfs_state === 0) {\n\t\t\t\t\t\tselected = aid;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (selected == -1)\n\t\t\t\tbreak;\n\t\t\tthis.vertices[selected].parent_vertex = -1;\n\t\t\tthis.vertices[selected].parent_edge = -1;\n\t\t\tvStack.push(selected);\n\t\t\tcomponent++;\n\t\t}\n\n\t\tvar vIdx = vStack.pop();\n\t\tvar parentVertex = this.vertices[vIdx].parent_vertex;\n\n\t\tvar seqElem = new Dfs.SeqElem(vIdx, parentVertex, this.vertices[vIdx].parent_edge);\n\t\tthis.v_seq.push(seqElem);\n\n\t\tthis.vertices[vIdx].dfs_state = 2;\n\n\t\tvar atomD = this.atom_data[vIdx];\n\n\t\tfor (i = 0; i < atomD.neighbours.length; i++) {\n\t\t\tvar neiIdx = atomD.neighbours[i].aid;\n\t\t\tvar edgeIdx = atomD.neighbours[i].bid;\n\n\t\t\tif (neiIdx == parentVertex)\n\t\t\t\tcontinue; // eslint-disable-line no-continue\n\n\t\t\tif (this.vertices[neiIdx].dfs_state == 2) {\n\t\t\t\tthis.edges[edgeIdx].closing_cycle = 1;\n\n\t\t\t\tj = vIdx;\n\n\t\t\t\twhile (j != -1 && this.vertices[j].parent_vertex != neiIdx)\n\t\t\t\t\tj = this.vertices[j].parent_vertex;\n\n\t\t\t\tif (j == -1)\n\t\t\t\t\tthrow new Error('cycle unwind error');\n\n\t\t\t\tthis.edges[this.vertices[j].parent_edge].opening_cycles++;\n\t\t\t\tthis.vertices[vIdx].branches++;\n\n\t\t\t\tseqElem = new Dfs.SeqElem(neiIdx, vIdx, edgeIdx);\n\t\t\t\tthis.v_seq.push(seqElem);\n\t\t\t} else {\n\t\t\t\tif (this.vertices[neiIdx].dfs_state == 1) {\n\t\t\t\t\tj = vStack.indexOf(neiIdx);\n\n\t\t\t\t\tif (j == -1) // eslint-disable-line max-depth\n\t\t\t\t\t\tthrow new Error('internal: removing vertex from stack');\n\n\t\t\t\t\tvStack.splice(j, 1);\n\n\t\t\t\t\tvar parent = this.vertices[neiIdx].parent_vertex;\n\n\t\t\t\t\tif (parent >= 0) // eslint-disable-line max-depth\n\t\t\t\t\t\tthis.vertices[parent].branches--;\n\t\t\t\t}\n\n\t\t\t\tthis.vertices[vIdx].branches++;\n\t\t\t\tthis.vertices[neiIdx].parent_vertex = vIdx;\n\t\t\t\tthis.vertices[neiIdx].parent_edge = edgeIdx;\n\t\t\t\tthis.vertices[neiIdx].dfs_state = 1;\n\t\t\t\tvStack.push(neiIdx);\n\t\t\t}\n\t\t}\n\t}\n};\n\nDfs.prototype.edgeClosingCycle = function (eIdx) {\n\treturn this.edges[eIdx].closing_cycle !== 0;\n};\n\nDfs.prototype.numBranches = function (vIdx) {\n\treturn this.vertices[vIdx].branches;\n};\n\nDfs.prototype.numOpeningCycles = function (eIdx) {\n\treturn this.edges[eIdx].opening_cycles;\n};\n\nDfs.prototype.toString = function () {\n\tvar str = '';\n\tthis.v_seq.forEach((seqElem) => {\n\t\tstr += seqElem.idx + ' -> ';\n\t});\n\tstr += '*';\n\treturn str;\n};\n\nexport default Dfs;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Pile from '../../util/pile';\nimport { Atom, Bond, SGroup } from '../struct';\nimport CisTrans from './cis_trans';\nimport Dfs from './dfs';\nimport Stereocenters from './stereocenters';\n\nfunction Smiles() {\n\tthis.smiles = '';\n\tthis.writtenAtoms = [];\n\tthis.writtenComponents = 0;\n\n\tthis.ignore_errors = false;\n}\n\nSmiles._Atom = function (hСount) { // eslint-disable-line no-underscore-dangle\n\tthis.neighbours = []; // Array of integer pairs {a, b}\n\tthis.aromatic = false; // has aromatic bond\n\tthis.lowercase = false; // aromatic and has to be written lowercase\n\tthis.chirality = 0; // 0 means no chirality, 1 means CCW pyramid, 2 means CW pyramid\n\tthis.branch_cnt = 0; // runs from 0 to (branches - 1)\n\tthis.paren_written = false;\n\tthis.h_count = hСount;\n\tthis.parent = -1;\n};\n\n// NB: only loops of length up to 6 are included here\nSmiles.prototype.isBondInRing = function (bid) {\n\tconsole.assert(this.inLoop, 'Init this.inLoop prior to calling this method');\n\treturn this.inLoop[bid];\n};\n\nSmiles.prototype.saveMolecule = function (molecule, ignoreErrors) { // eslint-disable-line max-statements\n\tvar i, j, k;\n\n\tif (!ignoreErrors) this.ignore_errors = ignoreErrors;\n\n\t// [RB]: KETCHER-498 (Incorrect smile-string for multiple Sgroup)\n\t// TODO the fix is temporary, still need to implement error handling/reporting\n\t// BEGIN\n\tmolecule = molecule.clone();\n\tmolecule.initHalfBonds();\n\tmolecule.initNeighbors();\n\tmolecule.sortNeighbors();\n\tmolecule.setImplicitHydrogen();\n\tmolecule.sgroups.forEach((sg) => {\n\t\tif (sg.type === 'MUL') {\n\t\t\ttry {\n\t\t\t\tSGroup.prepareMulForSaving(sg, molecule);\n\t\t\t} catch (ex) {\n\t\t\t\tthrow Error('Bad s-group (' + ex.message + ')');\n\t\t\t}\n\t\t}\n\t\t// 'SMILES data format doesn\\'t support s-groups'\n\t});\n\t// END\n\n\tthis.atoms = new Array(molecule.atoms.size);\n\n\tmolecule.atoms.forEach((atom, aid) => {\n\t\tthis.atoms[aid] = new Smiles._Atom(atom.implicitH); // eslint-disable-line no-underscore-dangle\n\t});\n\n\t// From the SMILES specification:\n\t// Please note that only atoms on the following list\n\t// can be considered aromatic: C, N, O, P, S, As, Se, and * (wildcard).\n\tvar allowedLowercase = ['B', 'C', 'N', 'O', 'P', 'S', 'Se', 'As'];\n\n\t// Detect atoms that have aromatic bonds and count neighbours\n\tmolecule.bonds.forEach((bond, bid) => {\n\t\tif (bond.type === Bond.PATTERN.TYPE.AROMATIC) {\n\t\t\tthis.atoms[bond.begin].aromatic = true;\n\t\t\tif (allowedLowercase.indexOf(molecule.atoms.get(bond.begin).label) !== -1)\n\t\t\t\tthis.atoms[bond.begin].lowercase = true;\n\t\t\tthis.atoms[bond.end].aromatic = true;\n\t\t\tif (allowedLowercase.indexOf(molecule.atoms.get(bond.end).label) !== -1)\n\t\t\t\tthis.atoms[bond.end].lowercase = true;\n\t\t}\n\t\tthis.atoms[bond.begin].neighbours.push({ aid: bond.end, bid });\n\t\tthis.atoms[bond.end].neighbours.push({ aid: bond.begin, bid });\n\t});\n\n\tthis.inLoop = (function () {\n\t\tmolecule.prepareLoopStructure();\n\t\tlet bondsInLoops = new Pile();\n\t\tmolecule.loops.forEach((loop) => {\n\t\t\tif (loop.hbs.length <= 6) {\n\t\t\t\tconst hbids = loop.hbs.map(hbid => molecule.halfBonds.get(hbid).bid);\n\t\t\t\tbondsInLoops = bondsInLoops.union(new Pile(hbids));\n\t\t\t}\n\t\t});\n\t\tconst inLoop = {};\n\t\tbondsInLoops.forEach((bid) => {\n\t\t\tinLoop[bid] = 1;\n\t\t});\n\t\treturn inLoop;\n\t}());\n\n\tthis.touchedCistransbonds = 0;\n\tthis.markCisTrans(molecule);\n\n\tvar components = molecule.getComponents();\n\tvar componentsAll = components.reactants.concat(components.products);\n\n\tvar walk = new Dfs(molecule, this.atoms, componentsAll, components.reactants.length);\n\n\twalk.walk();\n\tthis.atoms.forEach((atom) => {\n\t\tatom.neighbours = [];\n\t});\n\n\t// fill up neighbor lists for the stereocenters calculation\n\tfor (i = 0; i < walk.v_seq.length; i++) {\n\t\tvar seqEl = walk.v_seq[i];\n\t\tvar vIdx = seqEl.idx;\n\t\tvar eIdx = seqEl.parent_edge;\n\t\tvar vPrevIdx = seqEl.parent_vertex;\n\n\t\tif (eIdx >= 0) {\n\t\t\tvar atom = this.atoms[vIdx];\n\n\t\t\tvar openingCycles = walk.numOpeningCycles(eIdx);\n\n\t\t\tfor (j = 0; j < openingCycles; j++)\n\t\t\t\tthis.atoms[vPrevIdx].neighbours.push({ aid: -1, bid: -1 });\n\n\t\t\tif (walk.edgeClosingCycle(eIdx)) {\n\t\t\t\tfor (k = 0; k < atom.neighbours.length; k++) {\n\t\t\t\t\tif (atom.neighbours[k].aid === -1) { // eslint-disable-line max-depth\n\t\t\t\t\t\tatom.neighbours[k].aid = vPrevIdx;\n\t\t\t\t\t\tatom.neighbours[k].bid = eIdx;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (k === atom.neighbours.length)\n\t\t\t\t\tthrow new Error('internal: can not put closing bond to its place');\n\t\t\t} else {\n\t\t\t\tatom.neighbours.push({ aid: vPrevIdx, bid: eIdx });\n\t\t\t\tatom.parent = vPrevIdx;\n\t\t\t}\n\t\t\tthis.atoms[vPrevIdx].neighbours.push({ aid: vIdx, bid: eIdx });\n\t\t}\n\t}\n\n\ttry {\n\t\t// detect chiral configurations\n\t\tvar stereocenters = new Stereocenters(molecule, function (idx) {\n\t\t\treturn this.atoms[idx].neighbours;\n\t\t}, this);\n\t\tstereocenters.buildFromBonds(this.ignore_errors);\n\n\t\tstereocenters.each((sc, atomIdx) => { // eslint-disable-line max-statements\n\t\t\t// if (sc.type < MoleculeStereocenters::ATOM_AND)\n\t\t\t// continue;\n\n\t\t\tvar implicitHIdx = -1;\n\n\t\t\tif (sc.pyramid[3] == -1)\n\t\t\t\timplicitHIdx = 3;\n\t\t\t/*\n\t\t\telse for (j = 0; j < 4; j++)\n\t\t\t\tif (ignored_vertices[pyramid[j]])\n\t\t\t\t{\n\t\t\t\t\timplicit_h_idx = j;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t*/\n\n\t\t\tvar pyramidMapping = [];\n\t\t\tvar counter = 0;\n\n\t\t\tvar atom = this.atoms[atomIdx];\n\n\t\t\tif (atom.parent != -1) {\n\t\t\t\tfor (k = 0; k < 4; k++) {\n\t\t\t\t\tif (sc.pyramid[k] == atom.parent) {\n\t\t\t\t\t\tpyramidMapping[counter++] = k;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (implicitHIdx != -1)\n\t\t\t\tpyramidMapping[counter++] = implicitHIdx;\n\n\t\t\tfor (j = 0; j != atom.neighbours.length; j++) {\n\t\t\t\tif (atom.neighbours[j].aid == atom.parent)\n\t\t\t\t\tcontinue; // eslint-disable-line no-continue\n\n\t\t\t\tfor (k = 0; k < 4; k++) {\n\t\t\t\t\tif (atom.neighbours[j].aid == sc.pyramid[k]) {\n\t\t\t\t\t\tif (counter >= 4)\n\t\t\t\t\t\t\tthrow new Error('internal: pyramid overflow');\n\t\t\t\t\t\tpyramidMapping[counter++] = k;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (counter == 4) {\n\t\t\t\t// move the 'from' atom to the end\n\t\t\t\tcounter = pyramidMapping[0];\n\t\t\t\tpyramidMapping[0] = pyramidMapping[1];\n\t\t\t\tpyramidMapping[1] = pyramidMapping[2];\n\t\t\t\tpyramidMapping[2] = pyramidMapping[3];\n\t\t\t\tpyramidMapping[3] = counter;\n\t\t\t} else if (counter != 3) {\n\t\t\t\tthrow new Error('cannot calculate chirality');\n\t\t\t}\n\n\t\t\tif (Stereocenters.isPyramidMappingRigid(pyramidMapping))\n\t\t\t\tthis.atoms[atomIdx].chirality = 1;\n\t\t\telse\n\t\t\t\tthis.atoms[atomIdx].chirality = 2;\n\t\t});\n\t} catch (ex) {\n\t\talert('Warning: ' + ex.message); // eslint-disable-line no-undef\n\t}\n\n\t// write the SMILES itself\n\n\t// cycle_numbers[i] == -1 means that the number is available\n\t// cycle_numbers[i] == n means that the number is used by vertex n\n\tvar cycleNumbers = [];\n\n\tcycleNumbers.push(0); // never used\n\n\tvar firstComponent = true;\n\n\tfor (i = 0; i < walk.v_seq.length; i++) {\n\t\tseqEl = walk.v_seq[i];\n\t\tvIdx = seqEl.idx;\n\t\teIdx = seqEl.parent_edge;\n\t\tvPrevIdx = seqEl.parent_vertex;\n\t\tvar writeAtom = true;\n\n\t\tif (vPrevIdx >= 0) {\n\t\t\tif (walk.numBranches(vPrevIdx) > 1) {\n\t\t\t\tif (this.atoms[vPrevIdx].branch_cnt > 0 && this.atoms[vPrevIdx].paren_written)\n\t\t\t\t\tthis.smiles += ')';\n\t\t\t}\n\n\t\t\topeningCycles = walk.numOpeningCycles(eIdx);\n\n\t\t\tfor (j = 0; j < openingCycles; j++) {\n\t\t\t\tfor (k = 1; k < cycleNumbers.length; k++) {\n\t\t\t\t\tif (cycleNumbers[k] == -1) // eslint-disable-line max-depth\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (k == cycleNumbers.length)\n\t\t\t\t\tcycleNumbers.push(vPrevIdx);\n\t\t\t\telse\n\t\t\t\t\tcycleNumbers[k] = vPrevIdx;\n\n\t\t\t\tthis.writeCycleNumber(k);\n\t\t\t}\n\n\t\t\tif (vPrevIdx >= 0) {\n\t\t\t\tvar branches = walk.numBranches(vPrevIdx);\n\n\t\t\t\tif (branches > 1 && this.atoms[vPrevIdx].branch_cnt < branches - 1) {\n\t\t\t\t\tif (walk.edgeClosingCycle(eIdx)) { // eslint-disable-line max-depth\n\t\t\t\t\t\tthis.atoms[vPrevIdx].paren_written = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.smiles += '(';\n\t\t\t\t\t\tthis.atoms[vPrevIdx].paren_written = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.atoms[vPrevIdx].branch_cnt++;\n\n\t\t\t\tif (this.atoms[vPrevIdx].branch_cnt > branches)\n\t\t\t\t\tthrow new Error('unexpected branch');\n\t\t\t}\n\n\t\t\tvar bond = molecule.bonds.get(eIdx);\n\n\t\t\tvar dir = 0;\n\n\t\t\tif (bond.type == Bond.PATTERN.TYPE.SINGLE)\n\t\t\t\tdir = this.calcBondDirection(molecule, eIdx, vPrevIdx);\n\n\t\t\tif ((dir == 1 && vIdx == bond.end) || (dir == 2 && vIdx == bond.begin))\n\t\t\t\tthis.smiles += '/';\n\t\t\telse if ((dir == 2 && vIdx == bond.end) || (dir == 1 && vIdx == bond.begin))\n\t\t\t\tthis.smiles += '\\\\';\n\t\t\telse if (bond.type == Bond.PATTERN.TYPE.ANY)\n\t\t\t\tthis.smiles += '~';\n\t\t\telse if (bond.type == Bond.PATTERN.TYPE.DOUBLE)\n\t\t\t\tthis.smiles += '=';\n\t\t\telse if (bond.type == Bond.PATTERN.TYPE.TRIPLE)\n\t\t\t\tthis.smiles += '#';\n\t\t\telse if (bond.type == Bond.PATTERN.TYPE.AROMATIC &&\n\t\t\t(!this.atoms[bond.begin].lowercase || !this.atoms[bond.end].lowercase || !this.isBondInRing(eIdx)))\n\t\t\t\tthis.smiles += ':'; // TODO: Check if this : is needed\n\t\t\telse if (bond.type == Bond.PATTERN.TYPE.SINGLE && this.atoms[bond.begin].aromatic && this.atoms[bond.end].aromatic)\n\t\t\t\tthis.smiles += '-';\n\n\n\t\t\tif (walk.edgeClosingCycle(eIdx)) {\n\t\t\t\tfor (j = 1; j < cycleNumbers.length; j++) {\n\t\t\t\t\tif (cycleNumbers[j] == vIdx)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (j == cycleNumbers.length)\n\t\t\t\t\tthrow new Error('cycle number not found');\n\n\t\t\t\tthis.writeCycleNumber(j);\n\n\t\t\t\tcycleNumbers[j] = -1;\n\t\t\t\twriteAtom = false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (!firstComponent) {\n\t\t\t\tthis.smiles += (this.writtenComponents === walk.nComponentsInReactants &&\n\t\t\t\t\twalk.nReactants !== 0) ? '>>' : '.'; // when walk.nReactants === 0 - not reaction\n\t\t\t}\n\t\t\tfirstComponent = false;\n\t\t\tthis.writtenComponents++;\n\t\t}\n\t\tif (writeAtom) {\n\t\t\tthis.writeAtom(molecule, vIdx, this.atoms[vIdx].aromatic, this.atoms[vIdx].lowercase, this.atoms[vIdx].chirality);\n\t\t\tthis.writtenAtoms.push(seqEl.idx);\n\t\t}\n\t}\n\n\tthis.comma = false;\n\n\t// this._writeStereogroups(mol, atoms);\n\tthis.writeRadicals(molecule);\n\t// this._writePseudoAtoms(mol);\n\t// this._writeHighlighting();\n\n\tif (this.comma)\n\t\tthis.smiles += '|';\n\n\treturn this.smiles;\n};\n\nSmiles.prototype.writeCycleNumber = function (n) {\n\tif (n > 0 && n < 10)\n\t\tthis.smiles += n;\n\telse if (n >= 10 && n < 100)\n\t\tthis.smiles += '%' + n;\n\telse if (n >= 100 && n < 1000)\n\t\tthis.smiles += '%%' + n;\n\telse\n\t\tthrow new Error('bad cycle number: ' + n);\n};\n\nSmiles.prototype.writeAtom = function (mol, idx, aromatic, lowercase, chirality) { // eslint-disable-line max-params, max-statements\n\tvar atom = mol.atoms.get(idx);\n\tvar needBrackets = false;\n\tvar hydro = -1;\n\tvar aam = 0;\n\n\t/*\n\tif (mol.haveQueryAtoms())\n\t{\n\t query_atom = &mol.getQueryAtom(idx);\n\n\t if (query_atom->type == QUERY_ATOM_RGROUP)\n\t {\n\t\t if (mol.getRGroups()->isRGroupAtom(idx))\n\t\t {\n\t\t\tconst Array &rg = mol.getRGroups()->getSiteRGroups(idx);\n\n\t\t\tif (rg.length != 1)\n\t\t\t throw Error(\"rgroup count %d\", rg.length);\n\n\t\t\t_output.printf(\"[&%d]\", rg[0] + 1);\n\t\t }\n\t\t else\n\t\t\t_output.printf(\"[&%d]\", 1);\n\n\t\t return;\n\t }\n\t}\n\t*/\n\n\tif (atom.label == 'A') {\n\t\tthis.smiles += '*';\n\t\treturn;\n\t}\n\n\tif (atom.label == 'R' || atom.label == 'R#') {\n\t\tthis.smiles += '[*]';\n\t\treturn;\n\t}\n\n\t// KETCHER-598 (Ketcher does not save AAM into reaction SMILES)\n\t// BEGIN\n\t// if (this.atom_atom_mapping)\n\t// aam = atom_atom_mapping[idx];\n\taam = atom.aam;\n\t// END\n\n\tif (atom.label != 'C' && atom.label != 'P' &&\n\tatom.label != 'N' && atom.label != 'S' &&\n\tatom.label != 'O' && atom.label != 'Cl' &&\n\tatom.label != 'F' && atom.label != 'Br' &&\n\tatom.label != 'B' && atom.label != 'I')\n\t\tneedBrackets = true;\n\n\tif (atom.explicitValence >= 0 || atom.radical != 0 || chirality > 0 ||\n\t\t(aromatic && atom.label != 'C' && atom.label != 'O') ||\n\t(aromatic && atom.label == 'C' && this.atoms[idx].neighbours.length < 3 && this.atoms[idx].h_count == 0))\n\t\thydro = this.atoms[idx].h_count;\n\n\tvar label = atom.label;\n\tif (atom.atomList && !atom.atomList.notList) {\n\t\tlabel = atom.atomList.label();\n\t\tneedBrackets = false; // atom list label already has brackets\n\t} else if (atom.isPseudo() || (atom.atomList && atom.atomList.notList)) {\n\t\tlabel = '*';\n\t\tneedBrackets = true;\n\t} else if (chirality || atom.charge != 0 || atom.isotope > 0 || hydro >= 0 || aam > 0) {\n\t\tneedBrackets = true;\n\t}\n\n\tif (needBrackets) {\n\t\tif (hydro == -1)\n\t\t\thydro = this.atoms[idx].h_count;\n\t\tthis.smiles += '[';\n\t}\n\n\tif (atom.isotope > 0)\n\t\tthis.smiles += atom.isotope;\n\n\tif (lowercase)\n\t\tthis.smiles += label.toLowerCase();\n\telse\n\t\tthis.smiles += label;\n\n\tif (chirality > 0) {\n\t\tif (chirality == 1)\n\t\t\tthis.smiles += '@';\n\t\telse // chirality == 2\n\t\t\tthis.smiles += '@@';\n\n\t\tif (atom.implicitH > 1)\n\t\t\tthrow new Error(atom.implicitH + ' implicit H near stereocenter');\n\t}\n\n\tif (atom.label != 'H') {\n\t\tif (hydro > 1 || (hydro == 0 && !needBrackets))\n\t\t\tthis.smiles += 'H' + hydro;\n\t\telse if (hydro == 1)\n\t\t\tthis.smiles += 'H';\n\t}\n\n\tif (atom.charge > 1)\n\t\tthis.smiles += '+' + atom.charge;\n\telse if (atom.charge < -1)\n\t\tthis.smiles += atom.charge;\n\telse if (atom.charge == 1)\n\t\tthis.smiles += '+';\n\telse if (atom.charge == -1)\n\t\tthis.smiles += '-';\n\n\tif (aam > 0)\n\t\tthis.smiles += ':' + aam;\n\n\tif (needBrackets)\n\t\tthis.smiles += ']';\n\n\t/*\n\tif (mol.getRGroupFragment() != 0)\n\t{\n\t for (i = 0; i < 2; i++)\n\t {\n\t\t int j;\n\n\t\t for (j = 0; mol.getRGroupFragment()->getAttachmentPoint(i, j) != -1; j++)\n\t\t\tif (idx == mol.getRGroupFragment()->getAttachmentPoint(i, j))\n\t\t\t{\n\t\t\t _output.printf(\"([*])\");\n\t\t\t break;\n\t\t\t}\n\n\t\t if (mol.getRGroupFragment()->getAttachmentPoint(i, j) != -1)\n\t\t\tbreak;\n\t }\n\t}\n\t*/\n};\n\nSmiles.prototype.markCisTrans = function (mol) {\n\tthis.cis_trans = new CisTrans(mol, function (idx) {\n\t\treturn this.atoms[idx].neighbours;\n\t}, this);\n\tthis.cis_trans.build();\n\tthis.dbonds = new Array(mol.bonds.size);\n\n\tmol.bonds.forEach((bond, bid) => {\n\t\tthis.dbonds[bid] =\n\t\t{\n\t\t\tctbond_beg: -1,\n\t\t\tctbond_end: -1,\n\t\t\tsaved: 0\n\t\t};\n\t});\n\n\tthis.cis_trans.each((ct, bid) => {\n\t\tvar bond = mol.bonds.get(bid);\n\n\t\tif (ct.parity !== 0 && !this.isBondInRing(bid)) {\n\t\t\tvar neiBeg = this.atoms[bond.begin].neighbours;\n\t\t\tvar neiEnd = this.atoms[bond.end].neighbours;\n\t\t\tvar aromFailBeg = true;\n\t\t\tvar aromFailEnd = true;\n\n\t\t\tneiBeg.forEach((nei) => {\n\t\t\t\tif (nei.bid !== bid && mol.bonds.get(nei.bid).type === Bond.PATTERN.TYPE.SINGLE)\n\t\t\t\t\taromFailBeg = false;\n\t\t\t});\n\n\t\t\tneiEnd.forEach((nei) => {\n\t\t\t\tif (nei.bid !== bid && mol.bonds.get(nei.bid).type === Bond.PATTERN.TYPE.SINGLE)\n\t\t\t\t\taromFailEnd = false;\n\t\t\t});\n\n\t\t\tif (aromFailBeg || aromFailEnd)\n\t\t\t\treturn;\n\n\t\t\tneiBeg.forEach((nei) => {\n\t\t\t\tif (nei.bid === bid) return;\n\t\t\t\tif (mol.bonds.get(nei.bid).begin === bond.begin)\n\t\t\t\t\tthis.dbonds[nei.bid].ctbond_beg = bid;\n\t\t\t\telse\n\t\t\t\t\tthis.dbonds[nei.bid].ctbond_end = bid;\n\t\t\t});\n\n\t\t\tneiEnd.forEach((nei) => {\n\t\t\t\tif (nei.bid === bid) return;\n\t\t\t\tif (mol.bonds.get(nei.bid).begin === bond.end)\n\t\t\t\t\tthis.dbonds[nei.bid].ctbond_beg = bid;\n\t\t\t\telse\n\t\t\t\t\tthis.dbonds[nei.bid].ctbond_end = bid;\n\t\t\t});\n\t\t}\n\t});\n};\n\nSmiles.prototype.updateSideBonds = function (mol, bondIdx) { // eslint-disable-line max-statements\n\tvar bond = mol.bonds.get(bondIdx);\n\tvar subst = this.cis_trans.getSubstituents(bondIdx);\n\tvar parity = this.cis_trans.getParity(bondIdx);\n\n\tvar sidebonds = [-1, -1, -1, -1];\n\n\tsidebonds[0] = mol.findBondId(subst[0], bond.begin);\n\tif (subst[1] != -1)\n\t\tsidebonds[1] = mol.findBondId(subst[1], bond.begin);\n\n\tsidebonds[2] = mol.findBondId(subst[2], bond.end);\n\tif (subst[3] != -1)\n\t\tsidebonds[3] = mol.findBondId(subst[3], bond.end);\n\n\tvar n1 = 0;\n\tvar n2 = 0;\n\tvar n3 = 0;\n\tvar n4 = 0;\n\n\tif (this.dbonds[sidebonds[0]].saved != 0) {\n\t\tif ((this.dbonds[sidebonds[0]].saved == 1 && mol.bonds.get(sidebonds[0]).begin == bond.begin) ||\n\t\t(this.dbonds[sidebonds[0]].saved == 2 && mol.bonds.get(sidebonds[0]).end == bond.begin))\n\t\t\tn1++;\n\t\telse\n\t\t\tn2++;\n\t}\n\tif (sidebonds[1] != -1 && this.dbonds[sidebonds[1]].saved != 0) {\n\t\tif ((this.dbonds[sidebonds[1]].saved == 2 && mol.bonds.get(sidebonds[1]).begin == bond.begin) ||\n\t\t(this.dbonds[sidebonds[1]].saved == 1 && mol.bonds.get(sidebonds[1]).end == bond.begin))\n\t\t\tn1++;\n\t\telse\n\t\t\tn2++;\n\t}\n\tif (this.dbonds[sidebonds[2]].saved != 0) {\n\t\tif ((this.dbonds[sidebonds[2]].saved == 1 && mol.bonds.get(sidebonds[2]).begin == bond.end) ||\n\t\t(this.dbonds[sidebonds[2]].saved == 2 && mol.bonds.get(sidebonds[2]).end == bond.end))\n\t\t\tn3++;\n\t\telse\n\t\t\tn4++;\n\t}\n\tif (sidebonds[3] != -1 && this.dbonds[sidebonds[3]].saved != 0) {\n\t\tif ((this.dbonds[sidebonds[3]].saved == 2 && mol.bonds.get(sidebonds[3]).begin == bond.end) ||\n\t\t(this.dbonds[sidebonds[3]].saved == 1 && mol.bonds.get(sidebonds[3]).end == bond.end))\n\t\t\tn3++;\n\t\telse\n\t\t\tn4++;\n\t}\n\n\tif (parity == CisTrans.PARITY.CIS) {\n\t\tn1 += n3;\n\t\tn2 += n4;\n\t} else {\n\t\tn1 += n4;\n\t\tn2 += n3;\n\t}\n\n\tif (n1 > 0 && n2 > 0)\n\t\tthrow new Error('incompatible cis-trans configuration');\n\n\tif (n1 == 0 && n2 == 0)\n\t\treturn false;\n\n\tif (n1 > 0) {\n\t\tthis.dbonds[sidebonds[0]].saved =\n\t\t\t(mol.bonds.get(sidebonds[0]).begin == bond.begin) ? 1 : 2;\n\t\tif (sidebonds[1] != -1) {\n\t\t\tthis.dbonds[sidebonds[1]].saved =\n\t\t\t\t(mol.bonds.get(sidebonds[1]).begin == bond.begin) ? 2 : 1;\n\t\t}\n\n\t\tthis.dbonds[sidebonds[2]].saved =\n\t\t\t((mol.bonds.get(sidebonds[2]).begin == bond.end) == (parity == CisTrans.PARITY.CIS)) ? 1 : 2;\n\t\tif (sidebonds[3] != -1) {\n\t\t\tthis.dbonds[sidebonds[3]].saved =\n\t\t\t\t((mol.bonds.get(sidebonds[3]).begin == bond.end) == (parity == CisTrans.PARITY.CIS)) ? 2 : 1;\n\t\t}\n\t}\n\tif (n2 > 0) {\n\t\tthis.dbonds[sidebonds[0]].saved =\n\t\t\t(mol.bonds.get(sidebonds[0]).begin == bond.begin) ? 2 : 1;\n\t\tif (sidebonds[1] != -1) {\n\t\t\tthis.dbonds[sidebonds[1]].saved =\n\t\t\t\t(mol.bonds.get(sidebonds[1]).begin == bond.begin) ? 1 : 2;\n\t\t}\n\n\t\tthis.dbonds[sidebonds[2]].saved =\n\t\t\t((mol.bonds.get(sidebonds[2]).begin == bond.end) == (parity == CisTrans.PARITY.CIS)) ? 2 : 1;\n\t\tif (sidebonds[3] != -1) {\n\t\t\tthis.dbonds[sidebonds[3]].saved =\n\t\t\t\t((mol.bonds.get(sidebonds[3]).begin == bond.end) == (parity == CisTrans.PARITY.CIS)) ? 1 : 2;\n\t\t}\n\t}\n\n\treturn true;\n};\n\nSmiles.prototype.calcBondDirection = function (mol, idx, vprev) {\n\tvar ntouched;\n\n\tif (this.dbonds[idx].ctbond_beg == -1 && this.dbonds[idx].ctbond_end == -1)\n\t\treturn 0;\n\n\tif (mol.bonds.get(idx).type != Bond.PATTERN.TYPE.SINGLE)\n\t\tthrow new Error('internal: directed bond type ' + mol.bonds.get(idx).type);\n\n\twhile (true) { // eslint-disable-line no-constant-condition\n\t\tntouched = 0;\n\t\tthis.cis_trans.each((ct, bid) => {\n\t\t\tif (ct.parity !== 0 && !this.isBondInRing(bid)) {\n\t\t\t\tif (this.updateSideBonds(mol, bid))\n\t\t\t\t\tntouched++;\n\t\t\t}\n\t\t});\n\t\tif (ntouched === this.touchedCistransbonds)\n\t\t\tbreak;\n\t\tthis.touchedCistransbonds = ntouched;\n\t}\n\n\tif (this.dbonds[idx].saved === 0) {\n\t\tif (vprev === mol.bonds.get(idx).begin)\n\t\t\tthis.dbonds[idx].saved = 1;\n\t\telse\n\t\t\tthis.dbonds[idx].saved = 2;\n\t}\n\n\treturn this.dbonds[idx].saved;\n};\n\nSmiles.prototype.writeRadicals = function (mol) { // eslint-disable-line max-statements\n\tvar marked = new Array(this.writtenAtoms.length);\n\tvar i, j;\n\n\tfor (i = 0; i < this.writtenAtoms.length; i++) {\n\t\tif (marked[i])\n\t\t\tcontinue; // eslint-disable-line no-continue\n\n\t\tvar radical = mol.atoms.get(this.writtenAtoms[i]).radical;\n\n\t\tif (radical == 0)\n\t\t\tcontinue; // eslint-disable-line no-continue\n\n\t\tif (this.comma) {\n\t\t\tthis.smiles += ',';\n\t\t} else {\n\t\t\tthis.smiles += ' |';\n\t\t\tthis.comma = true;\n\t\t}\n\n\t\tif (radical == Atom.PATTERN.RADICAL.SINGLET)\n\t\t\tthis.smiles += '^3:';\n\t\telse if (radical == Atom.PATTERN.RADICAL.DOUPLET)\n\t\t\tthis.smiles += '^1:';\n\t\telse // RADICAL_TRIPLET\n\t\t\tthis.smiles += '^4:';\n\n\t\tthis.smiles += i;\n\n\t\tfor (j = i + 1; j < this.writtenAtoms.length; j++) {\n\t\t\tif (mol.atoms.get(this.writtenAtoms[j]).radical == radical) {\n\t\t\t\tmarked[j] = true;\n\t\t\t\tthis.smiles += ',' + j;\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default {\n\tstringify(struct, options) {\n\t\tconst opts = options || {};\n\t\treturn new Smiles().saveMolecule(struct, opts.ignoreErrors);\n\t}\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport Pool from '../../util/pool';\nimport Pile from '../../util/pile';\nimport { Bond } from '../struct';\n\nfunction Stereocenters(mol, neighborsFunc, context) {\n\tthis.molecule = mol;\n\tthis.atoms = new Pool();\n\tthis.getNeighbors = neighborsFunc;\n\tthis.context = context;\n}\n\nStereocenters.prototype.each = function (func, context) {\n\tthis.atoms.forEach(func, context);\n};\n\nStereocenters.prototype.buildFromBonds = function (/* const int *atom_types, const int *atom_groups, const int *bond_orientations, */ignoreErrors) {\n\tvar atoms = this.molecule.atoms;\n\tvar bonds = this.molecule.bonds;\n\n\t/*\n\t\tthis is a set of atoms that are likely to belong to allene structures and\n\t\ttherefore should not be considered as potential stereocenters in the code below,\n\t\tas allenes cannot be encoded in the SMILES notation\n\t*/\n\n\tvar alleneMask = new Pile();\n\tatoms.forEach((atom, aid) => {\n\t\tvar neiList = this.getNeighbors.call(this.context, aid);\n\t\tif (neiList.length !== 2)\n\t\t\treturn false;\n\t\tvar nei1 = neiList[0];\n\t\tvar nei2 = neiList[1];\n\t\t// check atom labels\n\t\tif ([aid, nei1.aid, nei2.aid].findIndex(aid => ['C', 'Si'].indexOf(atoms.get(aid).label) < 0, this) >= 0)\n\t\t\treturn false;\n\n\t\t// check adjacent bond types\n\t\tif ([nei1.bid, nei2.bid].findIndex(bid => bonds.get(bid).type !== Bond.PATTERN.TYPE.DOUBLE, this) >= 0)\n\t\t\treturn false;\n\n\t\t// get the other neighbors of the two adjacent atoms except for the central atom\n\t\tvar nei1nei = this.getNeighbors.call(this.context, nei1.aid).filter(nei => nei.aid != aid);\n\t\tvar nei2nei = this.getNeighbors.call(this.context, nei2.aid).filter(nei => nei.aid != aid);\n\t\tif (nei1nei.length < 1 || nei1nei.length > 2 || nei2nei.length < 1 || nei2nei.length > 2)\n\t\t\treturn false;\n\n\t\tif (nei1nei.concat(nei2nei).findIndex(nei => bonds.get(nei.bid).type != Bond.PATTERN.TYPE.SINGLE, this) >= 0)\n\t\t\treturn false;\n\n\t\tif (nei1nei.concat(nei2nei).findIndex(nei => bonds.get(nei.bid).stereo == Bond.PATTERN.STEREO.EITHER, this) >= 0)\n\t\t\treturn false;\n\t\talleneMask.add(nei1.aid).add(nei2.aid);\n\t\treturn true;\n\t});\n\n\tif (alleneMask.size > 0)\n\t\talert('This structure may contain allenes, which cannot be represented in the SMILES notation. Relevant stereo-information will be discarded.'); // eslint-disable-line no-undef\n\n\tatoms.forEach((atom, aid) => {\n\t\tif (alleneMask.has(aid))\n\t\t\treturn;\n\t\t/*\n if (atom_types[atom_idx] == 0)\n continue;\n */\n\t\tvar neiList = this.getNeighbors.call(this.context, aid);\n\t\tvar stereocenter = false;\n\n\t\tneiList.find(function (nei) {\n\t\t\tvar bond = this.molecule.bonds.get(nei.bid);\n\n\t\t\tif (bond.type === Bond.PATTERN.TYPE.SINGLE && bond.begin == aid) {\n\t\t\t\tif (bond.stereo === Bond.PATTERN.STEREO.UP || bond.stereo == Bond.PATTERN.STEREO.DOWN) {\n\t\t\t\t\tstereocenter = true;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}, this);\n\n\t\tif (!stereocenter)\n\t\t\treturn;\n\n\t\tif (ignoreErrors)\n\t\t\tthis.buildOneCenter(aid/* , atom_groups[atom_idx], atom_types[atom_idx], bond_orientations*/);\n\t\telse\n\t\t\tthis.buildOneCenter(aid/* , atom_groups[atom_idx], atom_types[atom_idx], bond_orientations*/);\n\t});\n};\n\nStereocenters.allowed_stereocenters =\n[\n\t{ elem: 'C', charge: 0, degree: 3, n_double_bonds: 0, implicit_degree: 4 },\n\t{ elem: 'C', charge: 0, degree: 4, n_double_bonds: 0, implicit_degree: 4 },\n\t{ elem: 'Si', charge: 0, degree: 3, n_double_bonds: 0, implicit_degree: 4 },\n\t{ elem: 'Si', charge: 0, degree: 4, n_double_bonds: 0, implicit_degree: 4 },\n\t{ elem: 'N', charge: 1, degree: 3, n_double_bonds: 0, implicit_degree: 4 },\n\t{ elem: 'N', charge: 1, degree: 4, n_double_bonds: 0, implicit_degree: 4 },\n\t{ elem: 'N', charge: 0, degree: 3, n_double_bonds: 0, implicit_degree: 3 },\n\t{ elem: 'S', charge: 0, degree: 4, n_double_bonds: 2, implicit_degree: 4 },\n\t{ elem: 'S', charge: 1, degree: 3, n_double_bonds: 0, implicit_degree: 3 },\n\t{ elem: 'S', charge: 0, degree: 3, n_double_bonds: 1, implicit_degree: 3 },\n\t{ elem: 'P', charge: 0, degree: 3, n_double_bonds: 0, implicit_degree: 3 },\n\t{ elem: 'P', charge: 1, degree: 4, n_double_bonds: 0, implicit_degree: 4 },\n\t{ elem: 'P', charge: 0, degree: 4, n_double_bonds: 1, implicit_degree: 4 }\n];\n\n\nStereocenters.prototype.buildOneCenter = function (atomIdx/* , int group, int type, const int *bond_orientations*/) { // eslint-disable-line max-statements\n\tvar atom = this.molecule.atoms.get(atomIdx);\n\n\tvar neiList = this.getNeighbors.call(this.context, atomIdx);\n\tvar degree = neiList.length;\n\tvar implicitDegree = -1;\n\n\tvar stereocenter = {\n\t\tgroup: 0, // = group;\n\t\ttype: 0, // = type;\n\t\tpyramid: []\n\t};\n\n\tvar edgeIds = [];\n\n\tvar lastAtomDir = 0;\n\tvar nDoubleBonds = 0;\n\n\tstereocenter.pyramid[0] = -1;\n\tstereocenter.pyramid[1] = -1;\n\tstereocenter.pyramid[2] = -1;\n\tstereocenter.pyramid[3] = -1;\n\n\tvar nPureHydrogens = 0;\n\n\tif (degree > 4)\n\t\tthrow new Error('stereocenter with %d bonds are not supported' + degree);\n\n\tneiList.forEach((nei, neiIdx) => {\n\t\tvar neiAtom = this.molecule.atoms.get(nei.aid);\n\t\tvar bond = this.molecule.bonds.get(nei.bid);\n\t\tedgeIds[neiIdx] = {\n\t\t\tedge_idx: nei.bid,\n\t\t\tnei_idx: nei.aid,\n\t\t\trank: nei.aid,\n\t\t\tvec: Vec2.diff(neiAtom.pp, atom.pp).yComplement()\n\t\t};\n\n\t\tif (neiAtom.pureHydrogen()) {\n\t\t\tnPureHydrogens++;\n\t\t\tedgeIds[neiIdx].rank = 10000;\n\t\t} else if (neiAtom.label === 'H') {\n\t\t\tedgeIds[neiIdx].rank = 5000;\n\t\t}\n\n\t\tif (!edgeIds[neiIdx].vec.normalize())\n\t\t\tthrow new Error('zero bond length');\n\n\t\tif (bond.type === Bond.PATTERN.TYPE.TRIPLE)\n\t\t\tthrow new Error('non-single bonds not allowed near stereocenter');\n\t\telse if (bond.type === Bond.PATTERN.TYPE.AROMATIC)\n\t\t\tthrow new Error('aromatic bonds not allowed near stereocenter');\n\t\telse if (bond.type === Bond.PATTERN.TYPE.DOUBLE)\n\t\t\tnDoubleBonds++;\n\t});\n\n\tStereocenters.allowed_stereocenters.find((as) => {\n\t\tif (as.elem === atom.label && as.charge === atom.charge &&\n\t\tas.degree === degree && as.n_double_bonds === nDoubleBonds) {\n\t\t\timplicitDegree = as.implicit_degree;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t});\n\n\tif (implicitDegree === -1)\n\t\tthrow new Error('unknown stereocenter configuration: ' + atom.label + ', charge ' + atom.charge + ', ' + degree + ' bonds (' + nDoubleBonds + ' double)');\n\n\tif (degree === 4 && nPureHydrogens > 1)\n\t\tthrow new Error(nPureHydrogens + ' hydrogens near stereocenter');\n\n\tif (degree === 3 && implicitDegree === 4 && nPureHydrogens > 0)\n\t\tthrow new Error('have hydrogen(s) besides implicit hydrogen near stereocenter');\n\n\tif (degree === 4) {\n\t\t// sort by neighbor atom index (ascending)\n\t\tif (edgeIds[0].rank > edgeIds[1].rank)\n\t\t\tswap(edgeIds, 0, 1);\n\t\tif (edgeIds[1].rank > edgeIds[2].rank)\n\t\t\tswap(edgeIds, 1, 2);\n\t\tif (edgeIds[2].rank > edgeIds[3].rank)\n\t\t\tswap(edgeIds, 2, 3);\n\t\tif (edgeIds[1].rank > edgeIds[2].rank)\n\t\t\tswap(edgeIds, 1, 2);\n\t\tif (edgeIds[0].rank > edgeIds[1].rank)\n\t\t\tswap(edgeIds, 0, 1);\n\t\tif (edgeIds[1].rank > edgeIds[2].rank)\n\t\t\tswap(edgeIds, 1, 2);\n\n\t\tvar main1 = -1;\n\t\tvar main2 = -1;\n\t\tvar side1 = -1;\n\t\tvar side2 = -1;\n\t\tvar mainDir = 0;\n\n\t\tfor (var neiIdx = 0; neiIdx < 4; neiIdx++) {\n\t\t\tvar stereo = this.getBondStereo(atomIdx, edgeIds[neiIdx].edge_idx);\n\n\t\t\tif (stereo === Bond.PATTERN.STEREO.UP || stereo == Bond.PATTERN.STEREO.DOWN) {\n\t\t\t\tmain1 = neiIdx;\n\t\t\t\tmainDir = stereo;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (main1 === -1)\n\t\t\tthrow new Error('none of 4 bonds going from stereocenter is stereobond');\n\n\t\tvar xyz1, xyz2;\n\n\t\t// find main2 as opposite to main1\n\t\tif (main2 === -1) {\n\t\t\txyz1 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 1) % 4].vec, edgeIds[(main1 + 2) % 4].vec);\n\t\t\txyz2 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 1) % 4].vec, edgeIds[(main1 + 3) % 4].vec);\n\n\t\t\tif (xyz1 + xyz2 == 3 || xyz1 + xyz2 == 12) {\n\t\t\t\tmain2 = (main1 + 1) % 4;\n\t\t\t\tside1 = (main1 + 2) % 4;\n\t\t\t\tside2 = (main1 + 3) % 4;\n\t\t\t}\n\t\t}\n\t\tif (main2 == -1) {\n\t\t\txyz1 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 2) % 4].vec, edgeIds[(main1 + 1) % 4].vec);\n\t\t\txyz2 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 2) % 4].vec, edgeIds[(main1 + 3) % 4].vec);\n\n\t\t\tif (xyz1 + xyz2 == 3 || xyz1 + xyz2 == 12) {\n\t\t\t\tmain2 = (main1 + 2) % 4;\n\t\t\t\tside1 = (main1 + 1) % 4;\n\t\t\t\tside2 = (main1 + 3) % 4;\n\t\t\t}\n\t\t}\n\t\tif (main2 == -1) {\n\t\t\txyz1 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 3) % 4].vec, edgeIds[(main1 + 1) % 4].vec);\n\t\t\txyz2 = Stereocenters.xyzzy(edgeIds[main1].vec, edgeIds[(main1 + 3) % 4].vec, edgeIds[(main1 + 2) % 4].vec);\n\n\t\t\tif (xyz1 + xyz2 == 3 || xyz1 + xyz2 == 12) {\n\t\t\t\tmain2 = (main1 + 3) % 4;\n\t\t\t\tside1 = (main1 + 2) % 4;\n\t\t\t\tside2 = (main1 + 1) % 4;\n\t\t\t}\n\t\t}\n\n\t\tif (main2 == -1)\n\t\t\tthrow new Error('internal error: can not find opposite bond');\n\n\t\tif (mainDir == Bond.PATTERN.STEREO.UP && this.getBondStereo(atomIdx, edgeIds[main2].edge_idx) == Bond.PATTERN.STEREO.DOWN)\n\t\t\tthrow new Error('stereo types of the opposite bonds mismatch');\n\t\tif (mainDir == Bond.PATTERN.STEREO.DOWN && this.getBondStereo(atomIdx, edgeIds[main2].edge_idx) == Bond.PATTERN.STEREO.UP)\n\t\t\tthrow new Error('stereo types of the opposite bonds mismatch');\n\n\t\tif (mainDir == this.getBondStereo(atomIdx, edgeIds[side1].edge_idx))\n\t\t\tthrow new Error('stereo types of non-opposite bonds match');\n\t\tif (mainDir == this.getBondStereo(atomIdx, edgeIds[side2].edge_idx))\n\t\t\tthrow new Error('stereo types of non-opposite bonds match');\n\n\t\tif (main1 == 3 || main2 == 3)\n\t\t\tlastAtomDir = mainDir;\n\t\telse\n\t\t\tlastAtomDir = (mainDir == Bond.PATTERN.STEREO.UP ? Bond.PATTERN.STEREO.DOWN : Bond.PATTERN.STEREO.UP);\n\n\t\tsign = Stereocenters.sign(edgeIds[0].vec, edgeIds[1].vec, edgeIds[2].vec);\n\n\t\tif ((lastAtomDir == Bond.PATTERN.STEREO.UP && sign > 0) ||\n\t\t(lastAtomDir == Bond.PATTERN.STEREO.DOWN && sign < 0)) {\n\t\t\tstereocenter.pyramid[0] = edgeIds[0].nei_idx;\n\t\t\tstereocenter.pyramid[1] = edgeIds[1].nei_idx;\n\t\t\tstereocenter.pyramid[2] = edgeIds[2].nei_idx;\n\t\t} else {\n\t\t\tstereocenter.pyramid[0] = edgeIds[0].nei_idx;\n\t\t\tstereocenter.pyramid[1] = edgeIds[2].nei_idx;\n\t\t\tstereocenter.pyramid[2] = edgeIds[1].nei_idx;\n\t\t}\n\n\t\tstereocenter.pyramid[3] = edgeIds[3].nei_idx;\n\t} else if (degree === 3) {\n\t\t// sort by neighbor atom index (ascending)\n\t\tif (edgeIds[0].rank > edgeIds[1].rank)\n\t\t\tswap(edgeIds, 0, 1);\n\t\tif (edgeIds[1].rank > edgeIds[2].rank)\n\t\t\tswap(edgeIds, 1, 2);\n\t\tif (edgeIds[0].rank > edgeIds[1].rank)\n\t\t\tswap(edgeIds, 0, 1);\n\n\t\tvar stereo0 = this.getBondStereo(atomIdx, edgeIds[0].edge_idx);\n\t\tvar stereo1 = this.getBondStereo(atomIdx, edgeIds[1].edge_idx);\n\t\tvar stereo2 = this.getBondStereo(atomIdx, edgeIds[2].edge_idx);\n\n\t\tvar nUp = 0;\n\t\tvar nDown = 0;\n\n\t\tnUp += (stereo0 === Bond.PATTERN.STEREO.UP) ? 1 : 0;\n\t\tnUp += (stereo1 === Bond.PATTERN.STEREO.UP) ? 1 : 0;\n\t\tnUp += (stereo2 === Bond.PATTERN.STEREO.UP) ? 1 : 0;\n\n\t\tnDown += (stereo0 === Bond.PATTERN.STEREO.DOWN) ? 1 : 0;\n\t\tnDown += (stereo1 === Bond.PATTERN.STEREO.DOWN) ? 1 : 0;\n\t\tnDown += (stereo2 === Bond.PATTERN.STEREO.DOWN) ? 1 : 0;\n\n\t\tif (implicitDegree == 4) { // have implicit hydrogen\n\t\t\tif (nUp == 3)\n\t\t\t\tthrow new Error('all 3 bonds up near stereoatom');\n\t\t\tif (nDown == 3)\n\t\t\t\tthrow new Error('all 3 bonds down near stereoatom');\n\n\t\t\tif (nUp == 0 && nDown == 0)\n\t\t\t\tthrow new Error('no up/down bonds near stereoatom -- indefinite case');\n\t\t\tif (nUp == 1 && nDown == 1)\n\t\t\t\tthrow new Error('one bond up, one bond down -- indefinite case');\n\n\t\t\tmainDir = 0;\n\n\t\t\tif (nUp == 2) {\n\t\t\t\tlastAtomDir = Bond.PATTERN.STEREO.DOWN;\n\t\t\t} else if (nDown == 2) {\n\t\t\t\tlastAtomDir = Bond.PATTERN.STEREO.UP;\n\t\t\t} else {\n\t\t\t\tmain1 = -1;\n\t\t\t\tside1 = -1;\n\t\t\t\tside2 = -1;\n\n\t\t\t\tfor (neiIdx = 0; neiIdx < 3; neiIdx++) {\n\t\t\t\t\tdir = this.getBondStereo(atomIdx, edgeIds[neiIdx].edge_idx);\n\n\t\t\t\t\tif (dir == Bond.PATTERN.STEREO.UP || dir == Bond.PATTERN.STEREO.DOWN) { // eslint-disable-line max-depth\n\t\t\t\t\t\tmain1 = neiIdx;\n\t\t\t\t\t\tmainDir = dir;\n\t\t\t\t\t\tside1 = (neiIdx + 1) % 3;\n\t\t\t\t\t\tside2 = (neiIdx + 2) % 3;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (main1 == -1)\n\t\t\t\t\tthrow new Error('internal error: can not find up or down bond');\n\n\t\t\t\tvar xyz = Stereocenters.xyzzy(edgeIds[side1].vec, edgeIds[side2].vec, edgeIds[main1].vec);\n\n\t\t\t\tif (xyz == 3 || xyz == 4)\n\t\t\t\t\tthrow new Error('degenerate case for 3 bonds near stereoatom');\n\n\t\t\t\tif (xyz == 1)\n\t\t\t\t\tlastAtomDir = mainDir;\n\t\t\t\telse\n\t\t\t\t\tlastAtomDir = (mainDir == Bond.PATTERN.STEREO.UP ? Bond.PATTERN.STEREO.DOWN : Bond.PATTERN.STEREO.UP);\n\t\t\t}\n\n\t\t\tvar sign = Stereocenters.sign(edgeIds[0].vec, edgeIds[1].vec, edgeIds[2].vec);\n\n\t\t\tif ((lastAtomDir == Bond.PATTERN.STEREO.UP && sign > 0) ||\n\t\t\t(lastAtomDir == Bond.PATTERN.STEREO.DOWN && sign < 0)) {\n\t\t\t\tstereocenter.pyramid[0] = edgeIds[0].nei_idx;\n\t\t\t\tstereocenter.pyramid[1] = edgeIds[1].nei_idx;\n\t\t\t\tstereocenter.pyramid[2] = edgeIds[2].nei_idx;\n\t\t\t} else {\n\t\t\t\tstereocenter.pyramid[0] = edgeIds[0].nei_idx;\n\t\t\t\tstereocenter.pyramid[1] = edgeIds[2].nei_idx;\n\t\t\t\tstereocenter.pyramid[2] = edgeIds[1].nei_idx;\n\t\t\t}\n\n\t\t\tstereocenter.pyramid[3] = -1;\n\t\t} else { // 3-connected P, N or S; no implicit hydrogens\n\t\t\tvar dir;\n\n\t\t\tif (nDown > 0 && nUp > 0)\n\t\t\t\tthrow new Error('one bond up, one bond down -- indefinite case');\n\t\t\telse if (nDown == 0 && nUp == 0)\n\t\t\t\tthrow new Error('no up-down bonds attached to stereocenter');\n\t\t\telse if (nUp > 0)\n\t\t\t\tdir = 1;\n\t\t\telse\n\t\t\t\tdir = -1;\n\n\t\t\tif (Stereocenters.xyzzy(edgeIds[0].vec, edgeIds[1].vec, edgeIds[2].vec) === 1 ||\n\t\t\tStereocenters.xyzzy(edgeIds[0].vec, edgeIds[2].vec, edgeIds[1].vec) === 1 ||\n\t\t\tStereocenters.xyzzy(edgeIds[2].vec, edgeIds[1].vec, edgeIds[0].vec) === 1)\n\t\t\t\t// all bonds belong to the same half-plane\n\t\t\t\tdir = -dir;\n\n\t\t\tsign = Stereocenters.sign(edgeIds[0].vec, edgeIds[1].vec, edgeIds[2].vec);\n\n\t\t\tif (sign == dir) {\n\t\t\t\tstereocenter.pyramid[0] = edgeIds[0].nei_idx;\n\t\t\t\tstereocenter.pyramid[1] = edgeIds[2].nei_idx;\n\t\t\t\tstereocenter.pyramid[2] = edgeIds[1].nei_idx;\n\t\t\t} else {\n\t\t\t\tstereocenter.pyramid[0] = edgeIds[0].nei_idx;\n\t\t\t\tstereocenter.pyramid[1] = edgeIds[1].nei_idx;\n\t\t\t\tstereocenter.pyramid[2] = edgeIds[2].nei_idx;\n\t\t\t}\n\t\t\tstereocenter.pyramid[3] = -1;\n\t\t}\n\t}\n\tthis.atoms.set(atomIdx, stereocenter);\n};\n\nStereocenters.prototype.getBondStereo = function (centerIdx, edgeIdx) {\n\tvar bond = this.molecule.bonds.get(edgeIdx);\n\n\tif (centerIdx != bond.begin) // TODO: check this\n\t\treturn 0;\n\n\treturn bond.stereo;\n};\n\n// 1 -- in the smaller angle, 2 -- in the bigger angle,\n// 4 -- in the 'positive' straight angle, 8 -- in the 'negative' straight angle\nStereocenters.xyzzy = function (v1, v2, u) {\n\tvar eps = 0.001;\n\n\tvar sine1 = Vec2.cross(v1, v2);\n\tvar cosine1 = Vec2.dot(v1, v2);\n\n\tvar sine2 = Vec2.cross(v1, u);\n\tvar cosine2 = Vec2.dot(v1, u);\n\n\tif (Math.abs(sine1) < eps) {\n\t\tif (Math.abs(sine2) < eps)\n\t\t\tthrow new Error('degenerate case -- bonds overlap');\n\n\t\treturn (sine2 > 0) ? 4 : 8;\n\t}\n\n\tif (sine1 * sine2 < -eps * eps)\n\t\treturn 2;\n\n\tif (cosine2 < cosine1)\n\t\treturn 2;\n\n\treturn 1;\n};\n\nStereocenters.sign = function (v1, v2, v3) {\n\tvar res = (v1.x - v3.x) * (v2.y - v3.y) - (v1.y - v3.y) * (v2.x - v3.x); // eslint-disable-line no-mixed-operators\n\tvar eps = 0.001;\n\n\tif (res > eps)\n\t\treturn 1;\n\tif (res < -eps)\n\t\treturn -1;\n\n\tthrow new Error('degenerate triangle');\n};\n\nStereocenters.isPyramidMappingRigid = function (mapping) {\n\tvar arr = mapping.slice();\n\tvar rigid = true;\n\n\tif (arr[0] > arr[1]) {\n\t\tswap(arr, 0, 1);\n\t\trigid = !rigid;\n\t}\n\tif (arr[1] > arr[2]) {\n\t\tswap(arr, 1, 2);\n\t\trigid = !rigid;\n\t}\n\tif (arr[2] > arr[3]) {\n\t\tswap(arr, 2, 3);\n\t\trigid = !rigid;\n\t}\n\tif (arr[1] > arr[2]) {\n\t\tswap(arr, 1, 2);\n\t\trigid = !rigid;\n\t}\n\tif (arr[0] > arr[1]) {\n\t\tswap(arr, 0, 1);\n\t\trigid = !rigid;\n\t}\n\tif (arr[1] > arr[2]) {\n\t\tswap(arr, 1, 2);\n\t\trigid = !rigid;\n\t}\n\n\treturn rigid;\n};\n\nfunction swap(arr, i1, i2) {\n\tvar tmp = arr[i1];\n\tarr[i1] = arr[i2];\n\tarr[i2] = tmp;\n}\n\nexport default Stereocenters;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport Pile from '../../util/pile';\nimport element from '../element';\nimport AtomList from './atomlist';\n\nfunction Atom(params) { // eslint-disable-line max-statements\n\tvar def = Atom.attrGetDefault;\n\tconsole.assert(params || 'label' in params, 'label must be specified!');\n\n\tthis.label = params.label;\n\tthis.fragment = ('fragment' in params) ? params.fragment : -1;\n\tthis.pseudo = params.pseudo || checkPseudo(params.label);\n\n\tifDef(this, params, 'alias', def('alias'));\n\tifDef(this, params, 'isotope', def('isotope'));\n\tifDef(this, params, 'radical', def('radical'));\n\tifDef(this, params, 'charge', def('charge'));\n\tifDef(this, params, 'rglabel', def('rglabel')); // r-group index mask, i-th bit stands for i-th r-site\n\tifDef(this, params, 'attpnt', def('attpnt')); // attachment point\n\tifDef(this, params, 'explicitValence', def('explicitValence'));\n\n\tthis.valence = 0;\n\tthis.implicitH = 0; // implicitH is not an attribute\n\tthis.pp = params.pp ? new Vec2(params.pp) : new Vec2();\n\n\t// sgs should only be set when an atom is added to an s-group by an appropriate method,\n\t// or else a copied atom might think it belongs to a group, but the group be unaware of the atom\n\t// TODO: make a consistency check on atom/s-group assignments\n\tthis.sgs = new Pile();\n\n\t// query\n\tifDef(this, params, 'ringBondCount', def('ringBondCount'));\n\tifDef(this, params, 'substitutionCount', def('substitutionCount'));\n\tifDef(this, params, 'unsaturatedAtom', def('unsaturatedAtom'));\n\tifDef(this, params, 'hCount', def('hCount'));\n\n\t// reaction\n\tifDef(this, params, 'aam', def('aam'));\n\tifDef(this, params, 'invRet', def('invRet'));\n\tifDef(this, params, 'exactChangeFlag', def('exactChangeFlag'));\n\tifDef(this, params, 'rxnFragmentType', -1); // this isn't really an attribute\n\n\tthis.atomList = params.atomList ? new AtomList(params.atomList) : null;\n\tthis.neighbors = []; // set of half-bonds having this atom as their origin\n\tthis.badConn = false;\n}\n\nAtom.getAttrHash = function (atom) {\n\tvar attrs = {};\n\tfor (var attr in Atom.attrlist) {\n\t\tif (typeof (atom[attr]) !== 'undefined')\n\t\t\tattrs[attr] = atom[attr];\n\t}\n\treturn attrs;\n};\n\nAtom.attrGetDefault = function (attr) {\n\tif (attr in Atom.attrlist)\n\t\treturn Atom.attrlist[attr];\n\treturn console.assert(false, 'Attribute unknown');\n};\n\n\nAtom.PATTERN =\n{\n\tRADICAL:\n\t{\n\t\tNONE: 0,\n\t\tSINGLET: 1,\n\t\tDOUPLET: 2,\n\t\tTRIPLET: 3\n\t}\n};\n\nAtom.attrlist = {\n\talias: null,\n\tlabel: 'C',\n\tpseudo: null,\n\tisotope: 0,\n\tradical: 0,\n\tcharge: 0,\n\texplicitValence: -1,\n\tringBondCount: 0,\n\tsubstitutionCount: 0,\n\tunsaturatedAtom: 0,\n\thCount: 0,\n\tatomList: null,\n\tinvRet: 0,\n\texactChangeFlag: 0,\n\trglabel: null,\n\tattpnt: null,\n\taam: 0\n};\n\nexport function radicalElectrons(radical) {\n\tradical -= 0;\n\tif (radical === Atom.PATTERN.RADICAL.NONE)\n\t\treturn 0;\n\telse if (radical === Atom.PATTERN.RADICAL.DOUPLET)\n\t\treturn 1;\n\telse if (radical === Atom.PATTERN.RADICAL.SINGLET ||\n\t\tradical === Atom.PATTERN.RADICAL.TRIPLET)\n\t\treturn 2;\n\treturn console.assert(false, 'Unknown radical value');\n}\n\n/**\n * @param fidMap { Map }\n * @returns { Atom }\n */\nAtom.prototype.clone = function (fidMap) {\n\tconst ret = new Atom(this);\n\tif (fidMap && fidMap.has(this.fragment))\n\t\tret.fragment = fidMap.get(this.fragment);\n\treturn ret;\n};\n\nAtom.prototype.isQuery = function () {\n\treturn this.atomList !== null || this.label === 'A' || this.attpnt || this.hCount;\n};\n\nAtom.prototype.pureHydrogen = function () {\n\treturn this.label === 'H' && this.isotope === 0;\n};\n\nAtom.prototype.isPlainCarbon = function () {\n\treturn this.label === 'C' && this.isotope === 0 && this.radical === 0 && this.charge === 0 &&\n\t\tthis.explicitValence < 0 && this.ringBondCount === 0 && this.substitutionCount === 0 &&\n\t\tthis.unsaturatedAtom === 0 && this.hCount === 0 && !this.atomList;\n};\n\nAtom.prototype.isPseudo = function () {\n\t// TODO: handle reaxys generics separately\n\treturn !this.atomList && !this.rglabel && !element.map[this.label];\n};\n\nAtom.prototype.hasRxnProps = function () {\n\treturn !!(this.invRet || this.exactChangeFlag || this.attpnt !== null || this.aam);\n};\n\nAtom.prototype.calcValence = function (conn) { // eslint-disable-line max-statements\n\tvar atom = this;\n\tvar charge = atom.charge;\n\tvar label = atom.label;\n\tif (atom.isQuery()) {\n\t\tthis.implicitH = 0;\n\t\treturn true;\n\t}\n\tvar elem = element.map[label];\n\tif (elem === undefined) {\n\t\tthis.implicitH = 0;\n\t\treturn true;\n\t}\n\n\tvar groupno = element[elem].group;\n\tvar rad = radicalElectrons(atom.radical);\n\n\tvar valence = conn;\n\tvar hyd = 0;\n\tvar absCharge = Math.abs(charge);\n\n\tif (groupno === 1) {\n\t\tif (label === 'H' ||\n\t\t\tlabel === 'Li' || label === 'Na' || label === 'K' ||\n\t\t\tlabel === 'Rb' || label === 'Cs' || label === 'Fr') {\n\t\t\tvalence = 1;\n\t\t\thyd = 1 - rad - conn - absCharge;\n\t\t}\n\t} else if (groupno === 2) {\n\t\tif (conn + rad + absCharge === 2 || conn + rad + absCharge === 0)\n\t\t\tvalence = 2;\n\t\telse\n\t\t\thyd = -1;\n\t} else if (groupno === 3) {\n\t\tif (label === 'B' || label === 'Al' || label === 'Ga' || label === 'In') {\n\t\t\tif (charge === -1) {\n\t\t\t\tvalence = 4;\n\t\t\t\thyd = 4 - rad - conn;\n\t\t\t} else {\n\t\t\t\tvalence = 3;\n\t\t\t\thyd = 3 - rad - conn - absCharge;\n\t\t\t}\n\t\t} else if (label === 'Tl') {\n\t\t\tif (charge === -1) {\n\t\t\t\tif (rad + conn <= 2) {\n\t\t\t\t\tvalence = 2;\n\t\t\t\t\thyd = 2 - rad - conn;\n\t\t\t\t} else {\n\t\t\t\t\tvalence = 4;\n\t\t\t\t\thyd = 4 - rad - conn;\n\t\t\t\t}\n\t\t\t} else if (charge === -2) {\n\t\t\t\tif (rad + conn <= 3) {\n\t\t\t\t\tvalence = 3;\n\t\t\t\t\thyd = 3 - rad - conn;\n\t\t\t\t} else {\n\t\t\t\t\tvalence = 5;\n\t\t\t\t\thyd = 5 - rad - conn;\n\t\t\t\t}\n\t\t\t} else if (rad + conn + absCharge <= 1) {\n\t\t\t\tvalence = 1;\n\t\t\t\thyd = 1 - rad - conn - absCharge;\n\t\t\t} else {\n\t\t\t\tvalence = 3;\n\t\t\t\thyd = 3 - rad - conn - absCharge;\n\t\t\t}\n\t\t}\n\t} else if (groupno === 4) {\n\t\tif (label === 'C' || label === 'Si' || label === 'Ge') {\n\t\t\tvalence = 4;\n\t\t\thyd = 4 - rad - conn - absCharge;\n\t\t} else if (label === 'Sn' || label === 'Pb') {\n\t\t\tif (conn + rad + absCharge <= 2) {\n\t\t\t\tvalence = 2;\n\t\t\t\thyd = 2 - rad - conn - absCharge;\n\t\t\t} else {\n\t\t\t\tvalence = 4;\n\t\t\t\thyd = 4 - rad - conn - absCharge;\n\t\t\t}\n\t\t}\n\t} else if (groupno === 5) {\n\t\tif (label === 'N' || label === 'P') {\n\t\t\tif (charge === 1) {\n\t\t\t\tvalence = 4;\n\t\t\t\thyd = 4 - rad - conn;\n\t\t\t} else if (charge === 2) {\n\t\t\t\tvalence = 3;\n\t\t\t\thyd = 3 - rad - conn;\n\t\t\t} else if (label === 'N' || rad + conn + absCharge <= 3) {\n\t\t\t\tvalence = 3;\n\t\t\t\thyd = 3 - rad - conn - absCharge;\n\t\t\t} else { // ELEM_P && rad + conn + absCharge > 3\n\t\t\t\tvalence = 5;\n\t\t\t\thyd = 5 - rad - conn - absCharge;\n\t\t\t}\n\t\t} else if (label === 'Bi' || label === 'Sb' || label === 'As') {\n\t\t\tif (charge === 1) {\n\t\t\t\tif (rad + conn <= 2 && label !== 'As') {\n\t\t\t\t\tvalence = 2;\n\t\t\t\t\thyd = 2 - rad - conn;\n\t\t\t\t} else {\n\t\t\t\t\tvalence = 4;\n\t\t\t\t\thyd = 4 - rad - conn;\n\t\t\t\t}\n\t\t\t} else if (charge === 2) {\n\t\t\t\tvalence = 3;\n\t\t\t\thyd = 3 - rad - conn;\n\t\t\t} else if (rad + conn <= 3) {\n\t\t\t\tvalence = 3;\n\t\t\t\thyd = 3 - rad - conn - absCharge;\n\t\t\t} else {\n\t\t\t\tvalence = 5;\n\t\t\t\thyd = 5 - rad - conn - absCharge;\n\t\t\t}\n\t\t}\n\t} else if (groupno === 6) {\n\t\tif (label === 'O') {\n\t\t\tif (charge >= 1) {\n\t\t\t\tvalence = 3;\n\t\t\t\thyd = 3 - rad - conn;\n\t\t\t} else {\n\t\t\t\tvalence = 2;\n\t\t\t\thyd = 2 - rad - conn - absCharge;\n\t\t\t}\n\t\t} else if (label === 'S' || label === 'Se' || label === 'Po') {\n\t\t\tif (charge === 1) {\n\t\t\t\tif (conn <= 3) {\n\t\t\t\t\tvalence = 3;\n\t\t\t\t\thyd = 3 - rad - conn;\n\t\t\t\t} else {\n\t\t\t\t\tvalence = 5;\n\t\t\t\t\thyd = 5 - rad - conn;\n\t\t\t\t}\n\t\t\t} else if (conn + rad + absCharge <= 2) {\n\t\t\t\tvalence = 2;\n\t\t\t\thyd = 2 - rad - conn - absCharge;\n\t\t\t} else if (conn + rad + absCharge <= 4) {\n\t\t\t\t// See examples in PubChem\n\t\t\t\t// [S] : CID 16684216\n\t\t\t\t// [Se]: CID 5242252\n\t\t\t\t// [Po]: no example, just following ISIS/Draw logic here\n\t\t\t\tvalence = 4;\n\t\t\t\thyd = 4 - rad - conn - absCharge;\n\t\t\t} else {\n\t\t\t\t// See examples in PubChem\n\t\t\t\t// [S] : CID 46937044\n\t\t\t\t// [Se]: CID 59786\n\t\t\t\t// [Po]: no example, just following ISIS/Draw logic here\n\t\t\t\tvalence = 6;\n\t\t\t\thyd = 6 - rad - conn - absCharge;\n\t\t\t}\n\t\t} else if (label === 'Te') {\n\t\t\tif (charge === -1) {\n\t\t\t\tif (conn <= 2) {\n\t\t\t\t\tvalence = 2;\n\t\t\t\t\thyd = 2 - rad - conn - absCharge;\n\t\t\t\t}\n\t\t\t} else if (charge === 0 || charge === 2) {\n\t\t\t\tif (conn <= 2) {\n\t\t\t\t\tvalence = 2;\n\t\t\t\t\thyd = 2 - rad - conn - absCharge;\n\t\t\t\t} else if (conn <= 4) {\n\t\t\t\t\tvalence = 4;\n\t\t\t\t\thyd = 4 - rad - conn - absCharge;\n\t\t\t\t} else if (charge === 0 && conn <= 6) {\n\t\t\t\t\tvalence = 6;\n\t\t\t\t\thyd = 6 - rad - conn - absCharge;\n\t\t\t\t} else {\n\t\t\t\t\thyd = -1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (groupno === 7) {\n\t\tif (label === 'F') {\n\t\t\tvalence = 1;\n\t\t\thyd = 1 - rad - conn - absCharge;\n\t\t} else if (label === 'Cl' || label === 'Br' ||\n\t\t\tlabel === 'I' || label === 'At') {\n\t\t\tif (charge === 1) {\n\t\t\t\tif (conn <= 2) {\n\t\t\t\t\tvalence = 2;\n\t\t\t\t\thyd = 2 - rad - conn;\n\t\t\t\t} else if (conn === 3 || conn === 5 || conn >= 7) {\n\t\t\t\t\thyd = -1;\n\t\t\t\t}\n\t\t\t} else if (charge === 0) {\n\t\t\t\tif (conn <= 1) {\n\t\t\t\t\tvalence = 1;\n\t\t\t\t\thyd = 1 - rad - conn;\n\t\t\t\t\t// While the halogens can have valence 3, they can not have\n\t\t\t\t\t// hydrogens in that case.\n\t\t\t\t} else if (conn === 2 || conn === 4 || conn === 6) {\n\t\t\t\t\tif (rad === 1) {\n\t\t\t\t\t\tvalence = conn;\n\t\t\t\t\t\thyd = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\thyd = -1; // will throw an error in the end\n\t\t\t\t\t}\n\t\t\t\t} else if (conn > 7) {\n\t\t\t\t\thyd = -1; // will throw an error in the end\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (groupno === 8) {\n\t\tif (conn + rad + absCharge === 0)\n\t\t\tvalence = 1;\n\t\telse\n\t\t\thyd = -1;\n\t}\n\n\tthis.valence = valence;\n\tthis.implicitH = hyd;\n\tif (this.implicitH < 0) {\n\t\tthis.valence = conn;\n\t\tthis.implicitH = 0;\n\t\tthis.badConn = true;\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nAtom.prototype.calcValenceMinusHyd = function (conn) { // eslint-disable-line max-statements\n\tvar atom = this;\n\tvar charge = atom.charge;\n\tvar label = atom.label;\n\tvar elem = element.map[label];\n\tif (elem === null)\n\t\tconsole.assert('Element ' + label + ' unknown');\n\tif (elem < 0) { // query atom, skip\n\t\tthis.implicitH = 0;\n\t\treturn null;\n\t}\n\n\tvar groupno = element[elem].group;\n\tvar rad = radicalElectrons(atom.radical);\n\n\tif (groupno === 3) {\n\t\tif (label === 'B' || label === 'Al' || label === 'Ga' || label === 'In') {\n\t\t\tif (charge === -1) {\n\t\t\t\tif (rad + conn <= 4)\n\t\t\t\t\treturn rad + conn;\n\t\t\t}\n\t\t}\n\t} else if (groupno === 5) {\n\t\tif (label === 'N' || label === 'P') {\n\t\t\tif (charge === 1)\n\t\t\t\treturn rad + conn;\n\t\t\tif (charge === 2)\n\t\t\t\treturn rad + conn;\n\t\t} else if (label === 'Sb' || label === 'Bi' || label === 'As') {\n\t\t\tif (charge === 1)\n\t\t\t\treturn rad + conn;\n\t\t\telse if (charge === 2)\n\t\t\t\treturn rad + conn;\n\t\t}\n\t} else if (groupno === 6) {\n\t\tif (label === 'O') {\n\t\t\tif (charge >= 1)\n\t\t\t\treturn rad + conn;\n\t\t} else if (label === 'S' || label === 'Se' || label === 'Po') {\n\t\t\tif (charge === 1)\n\t\t\t\treturn rad + conn;\n\t\t}\n\t} else if (groupno === 7) {\n\t\tif (label === 'Cl' || label === 'Br' ||\n\t\t\tlabel === 'I' || label === 'At') {\n\t\t\tif (charge === 1)\n\t\t\t\treturn rad + conn;\n\t\t}\n\t}\n\n\treturn rad + conn + Math.abs(charge);\n};\n\nfunction ifDef(dst, src, prop, def) {\n\tdst[prop] = !(typeof src[prop] === 'undefined') ? src[prop] : def;\n}\n\nfunction checkPseudo(label) {\n\treturn !element.map[label] && label !== 'L' && label !== 'L#' && label !== 'R#' ? label : null;\n}\n\nexport default Atom;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport element from '../element';\n\nfunction AtomList(params) {\n\tconsole.assert(params && 'notList' in params && 'ids' in params, '\\'notList\\' and \\'ids\\' must be specified!');\n\n\tthis.notList = params.notList; /* boolean*/\n\tthis.ids = params.ids; /* Array of integers*/\n}\n\nAtomList.prototype.labelList = function () {\n\tvar labels = [];\n\tfor (var i = 0; i < this.ids.length; ++i)\n\t\tlabels.push(element[this.ids[i]].label);\n\treturn labels;\n};\n\nAtomList.prototype.label = function () {\n\tvar label = '[' + this.labelList().join(',') + ']';\n\tif (this.notList)\n\t\tlabel = '!' + label;\n\treturn label;\n};\n\nAtomList.prototype.equals = function (x) {\n\treturn this.notList == x.notList && (this.ids || []).sort().toString() === (x.ids || []).sort().toString();\n};\n\nexport default AtomList;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\n\nfunction Bond(params) { // eslint-disable-line max-statements\n\tconsole.assert(params && 'begin' in params && 'end' in params && 'type' in params,\n\t\t'\\'begin\\', \\'end\\' and \\'type\\' properties must be specified!');\n\n\tthis.begin = params.begin;\n\tthis.end = params.end;\n\tthis.type = params.type;\n\tthis.xxx = params.xxx || '';\n\tthis.stereo = Bond.PATTERN.STEREO.NONE;\n\tthis.topology = Bond.PATTERN.TOPOLOGY.EITHER;\n\tthis.reactingCenterStatus = 0;\n\tthis.hb1 = null; // half-bonds\n\tthis.hb2 = null;\n\tthis.len = 0;\n\tthis.sb = 0;\n\tthis.sa = 0;\n\tthis.angle = 0;\n\n\tif (params.stereo)\n\t\tthis.stereo = params.stereo;\n\tif (params.topology)\n\t\tthis.topology = params.topology;\n\tif (params.reactingCenterStatus)\n\t\tthis.reactingCenterStatus = params.reactingCenterStatus;\n\n\tthis.center = new Vec2();\n}\n\nBond.PATTERN =\n{\n\tTYPE:\n\t{\n\t\tSINGLE: 1,\n\t\tDOUBLE: 2,\n\t\tTRIPLE: 3,\n\t\tAROMATIC: 4,\n\t\tSINGLE_OR_DOUBLE: 5,\n\t\tSINGLE_OR_AROMATIC: 6,\n\t\tDOUBLE_OR_AROMATIC: 7,\n\t\tANY: 8\n\t},\n\n\tSTEREO:\n\t{\n\t\tNONE: 0,\n\t\tUP: 1,\n\t\tEITHER: 4,\n\t\tDOWN: 6,\n\t\tCIS_TRANS: 3\n\t},\n\n\tTOPOLOGY:\n\t{\n\t\tEITHER: 0,\n\t\tRING: 1,\n\t\tCHAIN: 2\n\t},\n\n\tREACTING_CENTER:\n\t{\n\t\tNOT_CENTER: -1,\n\t\tUNMARKED: 0,\n\t\tCENTER: 1,\n\t\tUNCHANGED: 2,\n\t\tMADE_OR_BROKEN: 4,\n\t\tORDER_CHANGED: 8,\n\t\tMADE_OR_BROKEN_AND_CHANGED: 12\n\t}\n};\n\nBond.attrlist = {\n\ttype: Bond.PATTERN.TYPE.SINGLE,\n\tstereo: Bond.PATTERN.STEREO.NONE,\n\ttopology: Bond.PATTERN.TOPOLOGY.EITHER,\n\treactingCenterStatus: Bond.PATTERN.REACTING_CENTER.UNMARKED\n};\n\nBond.getAttrHash = function (bond) {\n\tvar attrs = {};\n\tfor (var attr in Bond.attrlist) {\n\t\tif (typeof (bond[attr]) !== 'undefined')\n\t\t\tattrs[attr] = bond[attr];\n\t}\n\treturn attrs;\n};\n\nBond.attrGetDefault = function (attr) {\n\tif (attr in Bond.attrlist)\n\t\treturn Bond.attrlist[attr];\n\treturn console.error('Attribute unknown');\n};\n\nBond.prototype.hasRxnProps = function () {\n\treturn !!this.reactingCenterStatus;\n};\n\nBond.prototype.getCenter = function (struct) {\n\tvar p1 = struct.atoms.get(this.begin).pp;\n\tvar p2 = struct.atoms.get(this.end).pp;\n\treturn Vec2.lc2(p1, 0.5, p2, 0.5);\n};\n\nBond.prototype.getDir = function (struct) {\n\tvar p1 = struct.atoms.get(this.begin).pp;\n\tvar p2 = struct.atoms.get(this.end).pp;\n\treturn p2.sub(p1).normalized();\n};\n\n/**\n * @param aidMap { Map }\n * @returns {Bond}\n */\nBond.prototype.clone = function (aidMap) {\n\tconst cp = new Bond(this);\n\tif (aidMap) {\n\t\tcp.begin = aidMap.get(cp.begin);\n\t\tcp.end = aidMap.get(cp.end);\n\t}\n\treturn cp;\n};\n\nexport default Bond;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Pool from '../../util/pool';\nimport Pile from '../../util/pile';\nimport Vec2 from '../../util/vec2';\nimport Box2Abs from '../../util/box2abs';\n\nimport element from '../element';\n\nimport Atom, { radicalElectrons } from './atom';\nimport AtomList from './atomlist';\nimport Bond from './bond';\nimport SGroup from './sgroup';\nimport RGroup from './rgroup';\nimport SGroupForest from './sgforest';\n\nfunction Struct() {\n\tthis.atoms = new Pool();\n\tthis.bonds = new Pool();\n\tthis.sgroups = new Pool();\n\tthis.halfBonds = new Pool();\n\tthis.loops = new Pool();\n\tthis.isChiral = false;\n\tthis.isReaction = false;\n\tthis.rxnArrows = new Pool();\n\tthis.rxnPluses = new Pool();\n\tthis.frags = new Pool();\n\tthis.rgroups = new Pool();\n\tthis.name = '';\n\tthis.sGroupForest = new SGroupForest(this);\n}\n\nStruct.prototype.hasRxnProps = function () {\n\treturn this.atoms.find((aid, atom) => atom.hasRxnProps()) ||\n\t\tthis.bonds.find((bid, bond) => bond.hasRxnProps());\n};\n\nStruct.prototype.hasRxnArrow = function () {\n\treturn this.rxnArrows.size > 0;\n};\n\nStruct.prototype.isBlank = function () {\n\treturn this.atoms.size === 0 &&\n\tthis.rxnArrows.size === 0 &&\n\tthis.rxnPluses.size === 0 && !this.isChiral;\n};\n\n/**\n * @param atomSet { Pile? }\n * @param bondSet { Pile? }\n * @param dropRxnSymbols { boolean? }\n * @param aidMap { Map? }\n * @returns { Struct }\n */\nStruct.prototype.clone = function (atomSet, bondSet, dropRxnSymbols, aidMap) {\n\treturn this.mergeInto(new Struct(), atomSet, bondSet, dropRxnSymbols, false, aidMap);\n};\n\nStruct.prototype.getScaffold = function () {\n\tconst atomSet = new Pile();\n\tthis.atoms.forEach((atom, aid) => { atomSet.add(aid); });\n\n\tthis.rgroups.forEach((rg) => {\n\t\trg.frags.forEach((fnum, fid) => {\n\t\t\tthis.atoms.forEach((atom, aid) => {\n\t\t\t\tif (atom.fragment === fid)\n\t\t\t\t\tatomSet.delete(aid);\n\t\t\t});\n\t\t});\n\t});\n\n\treturn this.clone(atomSet);\n};\n\nStruct.prototype.getFragmentIds = function (fid) {\n\tconst atomSet = new Pile();\n\n\tthis.atoms.forEach((atom, aid) => {\n\t\tif (atom.fragment === fid)\n\t\t\tatomSet.add(aid);\n\t});\n\n\treturn atomSet;\n};\n\nStruct.prototype.getFragment = function (fid) {\n\treturn this.clone(this.getFragmentIds(fid));\n};\n\n/**\n * @param cp { Struct } - container for merging\n * @param atomSet { Pile? }\n * @param bondSet { Pile? }\n * @param dropRxnSymbols { boolean? }\n * @param keepAllRGroups { boolean? }\n * @param aidMap { Map? }\n * @returns { Struct }\n */\nStruct.prototype.mergeInto = function (cp, atomSet, bondSet, dropRxnSymbols, keepAllRGroups, aidMap) { // eslint-disable-line max-params, max-statements\n\tatomSet = atomSet || new Pile(this.atoms.keys());\n\tbondSet = bondSet || new Pile(this.bonds.keys());\n\taidMap = aidMap || new Map();\n\n\tbondSet = bondSet.filter((bid) => {\n\t\tconst bond = this.bonds.get(bid);\n\t\treturn atomSet.has(bond.begin) && atomSet.has(bond.end);\n\t});\n\n\tconst fidMask = new Pile();\n\n\tthis.atoms.forEach((atom, aid) => {\n\t\tif (atomSet.has(aid))\n\t\t\tfidMask.add(atom.fragment);\n\t});\n\n\tconst fidMap = new Map();\n\tthis.frags.forEach((frag, fid) => {\n\t\tif (fidMask.has(fid))\n\t\t\tfidMap.set(fid, cp.frags.add(Object.assign({}, frag)));\n\t});\n\n\tconst rgroupsIds = [];\n\tthis.rgroups.forEach((rgroup, rgid) => {\n\t\tlet keepGroup = keepAllRGroups;\n\t\tif (!keepGroup) {\n\t\t\trgroup.frags.forEach((fnum, fid) => {\n\t\t\t\trgroupsIds.push(fid);\n\t\t\t\tif (fidMask.has(fid))\n\t\t\t\t\tkeepGroup = true;\n\t\t\t});\n\n\t\t\tif (!keepGroup)\n\t\t\t\treturn;\n\t\t}\n\n\t\tconst rg = cp.rgroups.get(rgid);\n\t\tif (rg) {\n\t\t\trgroup.frags.forEach((fnum, fid) => {\n\t\t\t\trgroupsIds.push(fid);\n\t\t\t\tif (fidMask.has(fid))\n\t\t\t\t\trg.frags.add(fidMap.get(fid));\n\t\t\t});\n\t\t} else {\n\t\t\tcp.rgroups.set(rgid, rgroup.clone(fidMap));\n\t\t}\n\t});\n\n\t// atoms in not RGroup\n\tthis.atoms.forEach((atom, aid) => {\n\t\tif (atomSet.has(aid) && rgroupsIds.indexOf(atom.fragment) === -1)\n\t\t\taidMap.set(aid, cp.atoms.add(atom.clone(fidMap)));\n\t});\n\t// atoms in RGroup\n\tthis.atoms.forEach((atom, aid) => {\n\t\tif (atomSet.has(aid) && rgroupsIds.indexOf(atom.fragment) !== -1)\n\t\t\taidMap.set(aid, cp.atoms.add(atom.clone(fidMap)));\n\t});\n\n\tconst bidMap = new Map();\n\tthis.bonds.forEach((bond, bid) => {\n\t\tif (bondSet.has(bid))\n\t\t\tbidMap.set(bid, cp.bonds.add(bond.clone(aidMap)));\n\t});\n\n\tthis.sgroups.forEach((sg) => {\n\t\tif (sg.atoms.some(aid => !atomSet.has(aid)))\n\t\t\treturn;\n\n\t\tsg = SGroup.clone(sg, aidMap);\n\t\tconst id = cp.sgroups.add(sg);\n\t\tsg.id = id;\n\n\t\tsg.atoms.forEach((aid) => {\n\t\t\tcp.atoms.get(aid).sgs.add(id);\n\t\t});\n\n\t\tif (sg.type === 'DAT')\n\t\t\tcp.sGroupForest.insert(sg.id, -1, []);\n\t\telse\n\t\t\tcp.sGroupForest.insert(sg.id);\n\t});\n\n\tcp.isChiral = cp.isChiral || this.isChiral;\n\n\tif (!dropRxnSymbols) {\n\t\tcp.isReaction = this.isReaction;\n\t\tthis.rxnArrows.forEach((item) => {\n\t\t\tcp.rxnArrows.add(item.clone());\n\t\t});\n\t\tthis.rxnPluses.forEach((item) => {\n\t\t\tcp.rxnPluses.add(item.clone());\n\t\t});\n\t}\n\n\treturn cp;\n};\n\n/**\n * @param begin { number }\n * @param end { number }\n * @return { number|null }\n */\nStruct.prototype.findBondId = function (begin, end) {\n\treturn this.bonds.find((bid, bond) =>\n\t\t(bond.begin === begin && bond.end === end) || (bond.begin === end && bond.end === begin));\n};\n\n/**\n * @param begin [ number }\n * @param end { number }\n * @param bid { number }\n * @constructor\n */\nfunction HalfBond(begin, end, bid) {\n\tconsole.assert(arguments.length === 3, 'Invalid parameter number!');\n\n\tthis.begin = begin;\n\tthis.end = end;\n\tthis.bid = bid;\n\n\t// rendering properties\n\tthis.dir = new Vec2(); // direction\n\tthis.norm = new Vec2(); // left normal\n\tthis.ang = 0; // angle to (1,0), used for sorting the bonds\n\tthis.p = new Vec2(); // corrected origin position\n\tthis.loop = -1; // left loop id if the half-bond is in a loop, otherwise -1\n\tthis.contra = -1; // the half bond contrary to this one\n\tthis.next = -1; // the half-bond next ot this one in CCW order\n\tthis.leftSin = 0;\n\tthis.leftCos = 0;\n\tthis.leftNeighbor = 0;\n\tthis.rightSin = 0;\n\tthis.rightCos = 0;\n\tthis.rightNeighbor = 0;\n}\n\nStruct.prototype.initNeighbors = function () {\n\tthis.atoms.forEach((atom) => {\n\t\tatom.neighbors = [];\n\t});\n\n\tthis.bonds.forEach((bond) => {\n\t\tconst a1 = this.atoms.get(bond.begin);\n\t\tconst a2 = this.atoms.get(bond.end);\n\t\ta1.neighbors.push(bond.hb1);\n\t\ta2.neighbors.push(bond.hb2);\n\t});\n};\n\nStruct.prototype.bondInitHalfBonds = function (bid, bond) {\n\tbond = bond || this.bonds.get(bid);\n\tbond.hb1 = 2 * bid;\n\tbond.hb2 = 2 * bid + 1; // eslint-disable-line no-mixed-operators\n\tthis.halfBonds.set(bond.hb1, new HalfBond(bond.begin, bond.end, bid));\n\tthis.halfBonds.set(bond.hb2, new HalfBond(bond.end, bond.begin, bid));\n\tconst hb1 = this.halfBonds.get(bond.hb1);\n\tconst hb2 = this.halfBonds.get(bond.hb2);\n\thb1.contra = bond.hb2;\n\thb2.contra = bond.hb1;\n};\n\nStruct.prototype.halfBondUpdate = function (hbid) {\n\tconst hb = this.halfBonds.get(hbid);\n\tconst p1 = this.atoms.get(hb.begin).pp;\n\tconst p2 = this.atoms.get(hb.end).pp;\n\tconst d = Vec2.diff(p2, p1).normalized();\n\thb.dir = Vec2.dist(p2, p1) > 1e-4 ? d : new Vec2(1, 0);\n\thb.norm = hb.dir.turnLeft();\n\thb.ang = hb.dir.oxAngle();\n\tif (hb.loop < 0)\n\t\thb.loop = -1;\n};\n\nStruct.prototype.initHalfBonds = function () {\n\tthis.halfBonds.clear();\n\tthis.bonds.forEach((bond, bid) => {\n\t\tthis.bondInitHalfBonds(bid, bond);\n\t});\n};\n\nStruct.prototype.setHbNext = function (hbid, next) {\n\tthis.halfBonds.get(this.halfBonds.get(hbid).contra).next = next;\n};\n\nStruct.prototype.halfBondSetAngle = function (hbid, left) {\n\tconst hb = this.halfBonds.get(hbid);\n\tconst hbl = this.halfBonds.get(left);\n\n\thbl.rightCos = Vec2.dot(hbl.dir, hb.dir);\n\thb.leftCos = Vec2.dot(hbl.dir, hb.dir);\n\n\thbl.rightSin = Vec2.cross(hbl.dir, hb.dir);\n\thb.leftSin = Vec2.cross(hbl.dir, hb.dir);\n\n\thb.leftNeighbor = left;\n\thbl.rightNeighbor = hbid;\n};\n\nStruct.prototype.atomAddNeighbor = function (hbid) {\n\tconst hb = this.halfBonds.get(hbid);\n\tconst atom = this.atoms.get(hb.begin);\n\n\tfor (var i = 0; i < atom.neighbors.length; ++i) {\n\t\tif (this.halfBonds.get(atom.neighbors[i]).ang > hb.ang)\n\t\t\tbreak;\n\t}\n\tatom.neighbors.splice(i, 0, hbid);\n\tvar ir = atom.neighbors[(i + 1) % atom.neighbors.length];\n\tvar il = atom.neighbors[(i + atom.neighbors.length - 1) %\n\t\tatom.neighbors.length];\n\tthis.setHbNext(il, hbid);\n\tthis.setHbNext(hbid, ir);\n\tthis.halfBondSetAngle(hbid, il);\n\tthis.halfBondSetAngle(ir, hbid);\n};\n\nStruct.prototype.atomSortNeighbors = function (aid) {\n\tconst atom = this.atoms.get(aid);\n\tconst halfBonds = this.halfBonds;\n\n\tatom.neighbors\n\t\t.sort((nei, nei2) => halfBonds.get(nei).ang - halfBonds.get(nei2).ang)\n\t\t.forEach((nei, i) => {\n\t\t\tconst nextNei = atom.neighbors[(i + 1) % atom.neighbors.length];\n\t\t\tthis.halfBonds.get(this.halfBonds.get(nei).contra).next = nextNei;\n\t\t\tthis.halfBondSetAngle(nextNei, nei);\n\t\t});\n};\n\nStruct.prototype.sortNeighbors = function (list) {\n\tif (!list) {\n\t\tthis.atoms.forEach((atom, aid) => {\n\t\t\tthis.atomSortNeighbors(aid);\n\t\t});\n\t} else {\n\t\tlist.forEach((aid) => {\n\t\t\tthis.atomSortNeighbors(aid);\n\t\t});\n\t}\n};\n\nStruct.prototype.atomUpdateHalfBonds = function (aid) {\n\tthis.atoms.get(aid).neighbors.forEach((hbid) => {\n\t\tthis.halfBondUpdate(hbid);\n\t\tthis.halfBondUpdate(this.halfBonds.get(hbid).contra);\n\t});\n};\n\nStruct.prototype.updateHalfBonds = function (list) {\n\tif (!list) {\n\t\tthis.atoms.forEach((atom, aid) => {\n\t\t\tthis.atomUpdateHalfBonds(aid);\n\t\t});\n\t} else {\n\t\tlist.forEach((aid) => {\n\t\t\tthis.atomUpdateHalfBonds(aid);\n\t\t});\n\t}\n};\n\nStruct.prototype.sGroupsRecalcCrossBonds = function () {\n\tthis.sgroups.forEach((sg) => {\n\t\tsg.xBonds = [];\n\t\tsg.neiAtoms = [];\n\t});\n\n\tthis.bonds.forEach((bond, bid) => {\n\t\tconst a1 = this.atoms.get(bond.begin);\n\t\tconst a2 = this.atoms.get(bond.end);\n\n\t\ta1.sgs.forEach((sgid) => {\n\t\t\tif (!a2.sgs.has(sgid)) {\n\t\t\t\tconst sg = this.sgroups.get(sgid);\n\t\t\t\tsg.xBonds.push(bid);\n\t\t\t\tarrayAddIfMissing(sg.neiAtoms, bond.end);\n\t\t\t}\n\t\t});\n\n\t\ta2.sgs.forEach((sgid) => {\n\t\t\tif (!a1.sgs.has(sgid)) {\n\t\t\t\tconst sg = this.sgroups.get(sgid);\n\t\t\t\tsg.xBonds.push(bid);\n\t\t\t\tarrayAddIfMissing(sg.neiAtoms, bond.begin);\n\t\t\t}\n\t\t});\n\t});\n};\n\nStruct.prototype.sGroupDelete = function (sgid) {\n\tthis.sgroups.get(sgid).atoms.forEach((atom) => {\n\t\tthis.atoms.get(atom).sgs.delete(sgid);\n\t});\n\n\tthis.sGroupForest.remove(sgid);\n\tthis.sgroups.delete(sgid);\n};\n\nStruct.prototype.atomSetPos = function (id, pp) {\n\tconst item = this.atoms.get(id);\n\titem.pp = pp;\n};\n\nStruct.prototype.rxnPlusSetPos = function (id, pp) {\n\tconst item = this.rxnPluses.get(id);\n\titem.pp = pp;\n};\n\nStruct.prototype.rxnArrowSetPos = function (id, pp) {\n\tconst item = this.rxnArrows.get(id);\n\titem.pp = pp;\n};\n\n/**\n * @param atomSet { Pile }\n * @returns {*}\n */\nStruct.prototype.getCoordBoundingBox = function (atomSet) {\n\tvar bb = null;\n\tfunction extend(pp) {\n\t\tif (!bb) {\n\t\t\tbb = {\n\t\t\t\tmin: pp,\n\t\t\t\tmax: pp\n\t\t\t};\n\t\t} else {\n\t\t\tbb.min = Vec2.min(bb.min, pp);\n\t\t\tbb.max = Vec2.max(bb.max, pp);\n\t\t}\n\t}\n\n\tvar global = !atomSet || atomSet.size === 0;\n\n\tthis.atoms.forEach((atom, aid) => {\n\t\tif (global || atomSet.has(aid))\n\t\t\textend(atom.pp);\n\t});\n\tif (global) {\n\t\tthis.rxnPluses.forEach((item) => {\n\t\t\textend(item.pp);\n\t\t});\n\t\tthis.rxnArrows.forEach((item) => {\n\t\t\textend(item.pp);\n\t\t});\n\t}\n\tif (!bb && global) {\n\t\tbb = {\n\t\t\tmin: new Vec2(0, 0),\n\t\t\tmax: new Vec2(1, 1)\n\t\t};\n\t}\n\treturn bb;\n};\n\nStruct.prototype.getCoordBoundingBoxObj = function () {\n\tvar bb = null;\n\tfunction extend(pp) {\n\t\tif (!bb) {\n\t\t\tbb = {\n\t\t\t\tmin: new Vec2(pp),\n\t\t\t\tmax: new Vec2(pp)\n\t\t\t};\n\t\t} else {\n\t\t\tbb.min = Vec2.min(bb.min, pp);\n\t\t\tbb.max = Vec2.max(bb.max, pp);\n\t\t}\n\t}\n\n\tthis.atoms.forEach((atom) => {\n\t\textend(atom.pp);\n\t});\n\treturn bb;\n};\n\nStruct.prototype.getBondLengthData = function () {\n\tlet totalLength = 0;\n\tlet cnt = 0;\n\tthis.bonds.forEach((bond) => {\n\t\ttotalLength += Vec2.dist(\n\t\t\tthis.atoms.get(bond.begin).pp,\n\t\t\tthis.atoms.get(bond.end).pp\n\t\t);\n\t\tcnt++;\n\t});\n\treturn { cnt, totalLength };\n};\n\nStruct.prototype.getAvgBondLength = function () {\n\tconst bld = this.getBondLengthData();\n\treturn bld.cnt > 0 ? bld.totalLength / bld.cnt : -1;\n};\n\nStruct.prototype.getAvgClosestAtomDistance = function () {\n\tvar totalDist = 0;\n\tvar minDist;\n\tvar dist = 0;\n\tvar keys = this.atoms.keys();\n\tvar k;\n\tvar j;\n\tfor (k = 0; k < keys.length; ++k) {\n\t\tminDist = -1;\n\t\tfor (j = 0; j < keys.length; ++j) {\n\t\t\tif (j == k)\n\t\t\t\tcontinue; // eslint-disable-line no-continue\n\t\t\tdist = Vec2.dist(this.atoms.get(keys[j]).pp, this.atoms.get(keys[k]).pp);\n\t\t\tif (minDist < 0 || minDist > dist)\n\t\t\t\tminDist = dist;\n\t\t}\n\t\ttotalDist += minDist;\n\t}\n\n\treturn keys.length > 0 ? totalDist / keys.length : -1;\n};\n\nStruct.prototype.checkBondExists = function (begin, end) {\n\tconst key = this.bonds.find((bid, bond) =>\n\t\t(bond.begin === begin && bond.end === end) ||\n\t\t(bond.end === begin && bond.begin === end));\n\n\treturn key !== undefined;\n};\n\n/**\n * @param hbs { Array }\n * @param struct < Struct }\n * @param isConvex { boolean }\n * @constructor\n */\nfunction Loop(hbs, struct, isConvex) {\n\tthis.hbs = hbs; // set of half-bonds involved\n\tthis.dblBonds = 0; // number of double bonds in the loop\n\tthis.aromatic = true;\n\tthis.convex = isConvex || false;\n\n\thbs.forEach((hb) => {\n\t\tconst bond = struct.bonds.get(struct.halfBonds.get(hb).bid);\n\t\tif (bond.type !== Bond.PATTERN.TYPE.AROMATIC)\n\t\t\tthis.aromatic = false;\n\t\tif (bond.type === Bond.PATTERN.TYPE.DOUBLE)\n\t\t\tthis.dblBonds++;\n\t});\n}\n\n/**\n * @param firstaid { number }\n * @returns { Pile }\n */\nStruct.prototype.findConnectedComponent = function (firstaid) {\n\tconst list = [firstaid];\n\tconst ids = new Pile();\n\twhile (list.length > 0) {\n\t\tconst aid = list.pop();\n\t\tids.add(aid);\n\t\tconst atom = this.atoms.get(aid);\n\t\tatom.neighbors.forEach((nei) => {\n\t\t\tconst neiId = this.halfBonds.get(nei).end;\n\t\t\tif (!ids.has(neiId))\n\t\t\t\tlist.push(neiId);\n\t\t});\n\t}\n\n\treturn ids;\n};\n\nStruct.prototype.findConnectedComponents = function (discardExistingFragments) {\n\t// NB: this is a hack\n\t// TODO: need to maintain half-bond and neighbor structure permanently\n\tif (!this.halfBonds.size) {\n\t\tthis.initHalfBonds();\n\t\tthis.initNeighbors();\n\t\tthis.updateHalfBonds(Array.from(this.atoms.keys()));\n\t\tthis.sortNeighbors(Array.from(this.atoms.keys()));\n\t}\n\n\tlet addedAtoms = new Pile();\n\n\tconst components = [];\n\tthis.atoms.forEach((atom, aid) => {\n\t\tif ((discardExistingFragments || atom.fragment < 0) && !addedAtoms.has(aid)) {\n\t\t\tconst component = this.findConnectedComponent(aid);\n\t\t\tcomponents.push(component);\n\t\t\taddedAtoms = addedAtoms.union(component);\n\t\t}\n\t});\n\n\treturn components;\n};\n\n/**\n * @param idSet { Pile }\n */\nStruct.prototype.markFragment = function (idSet) {\n\tconst frag = {};\n\tconst fid = this.frags.add(frag);\n\n\tidSet.forEach((aid) => {\n\t\tthis.atoms.get(aid).fragment = fid;\n\t});\n};\n\nStruct.prototype.markFragments = function () {\n\tconst components = this.findConnectedComponents();\n\tcomponents.forEach((comp) => {\n\t\tthis.markFragment(comp);\n\t});\n};\n\nStruct.prototype.scale = function (scale) {\n\tif (scale === 1)\n\t\treturn;\n\n\tthis.atoms.forEach((atom) => {\n\t\tatom.pp = atom.pp.scaled(scale);\n\t});\n\n\tthis.rxnPluses.forEach((item) => {\n\t\titem.pp = item.pp.scaled(scale);\n\t});\n\n\tthis.rxnArrows.forEach((item) => {\n\t\titem.pp = item.pp.scaled(scale);\n\t});\n\n\tthis.sgroups.forEach((item) => {\n\t\titem.pp = item.pp ? item.pp.scaled(scale) : null;\n\t});\n};\n\nStruct.prototype.rescale = function () {\n\tlet avg = this.getAvgBondLength();\n\tif (avg < 0 && !this.isReaction) // TODO [MK] this doesn't work well for reactions as the distances between\n\t\t// the atoms in different components are generally larger than those between atoms of a single component\n\t\t// (KETCHER-341)\n\t\tavg = this.getAvgClosestAtomDistance();\n\tif (avg < 1e-3)\n\t\tavg = 1;\n\n\tconst scale = 1 / avg;\n\tthis.scale(scale);\n};\n\nStruct.prototype.loopHasSelfIntersections = function (hbs) {\n\tfor (let i = 0; i < hbs.length; ++i) {\n\t\tconst hbi = this.halfBonds.get(hbs[i]);\n\t\tconst ai = this.atoms.get(hbi.begin).pp;\n\t\tconst bi = this.atoms.get(hbi.end).pp;\n\t\tconst set = new Pile([hbi.begin, hbi.end]);\n\n\t\tfor (let j = i + 2; j < hbs.length; ++j) {\n\t\t\tconst hbj = this.halfBonds.get(hbs[j]);\n\t\t\tif (set.has(hbj.begin) || set.has(hbj.end))\n\t\t\t\tcontinue; // skip edges sharing an atom\n\n\t\t\tconst aj = this.atoms.get(hbj.begin).pp;\n\t\t\tconst bj = this.atoms.get(hbj.end).pp;\n\n\t\t\tif (Box2Abs.segmentIntersection(ai, bi, aj, bj))\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n\n// partition a cycle into simple cycles\n// TODO: [MK] rewrite the detection algorithm to only find simple ones right away?\nStruct.prototype.partitionLoop = function (loop) { // eslint-disable-line max-statements\n\tconst subloops = [];\n\tlet continueFlag = true;\n\twhile (continueFlag) {\n\t\tconst atomToHalfBond = {}; // map from every atom in the loop to the index of the first half-bond starting from that atom in the uniqHb array\n\t\tcontinueFlag = false;\n\n\t\tfor (let l = 0; l < loop.length; ++l) {\n\t\t\tconst hbid = loop[l];\n\t\t\tconst aid1 = this.halfBonds.get(hbid).begin;\n\t\t\tconst aid2 = this.halfBonds.get(hbid).end;\n\t\t\tif (aid2 in atomToHalfBond) { // subloop found\n\t\t\t\tconst s = atomToHalfBond[aid2]; // where the subloop begins\n\t\t\t\tconst subloop = loop.slice(s, l + 1);\n\t\t\t\tsubloops.push(subloop);\n\t\t\t\tif (l < loop.length) // remove half-bonds corresponding to the subloop\n\t\t\t\t\tloop.splice(s, l - s + 1);\n\t\t\t\tcontinueFlag = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tatomToHalfBond[aid1] = l;\n\t\t}\n\t\tif (!continueFlag) subloops.push(loop); // we're done, no more subloops found\n\t}\n\treturn subloops;\n};\n\nStruct.prototype.halfBondAngle = function (hbid1, hbid2) {\n\tconst hba = this.halfBonds.get(hbid1);\n\tconst hbb = this.halfBonds.get(hbid2);\n\treturn Math.atan2(\n\t\tVec2.cross(hba.dir, hbb.dir),\n\t\tVec2.dot(hba.dir, hbb.dir)\n\t);\n};\n\nStruct.prototype.loopIsConvex = function (loop) {\n\treturn loop.every((item, k, loopArr) => {\n\t\tconst angle = this.halfBondAngle(item, loopArr[(k + 1) % loopArr.length]);\n\t\treturn angle <= 0;\n\t});\n};\n\n// check whether a loop is on the inner or outer side of the polygon\n// by measuring the total angle between bonds\nStruct.prototype.loopIsInner = function (loop) {\n\tlet totalAngle = 2 * Math.PI;\n\tloop.forEach((hbida, k, loopArr) => {\n\t\tconst hbidb = loopArr[(k + 1) % loopArr.length];\n\t\tconst hbb = this.halfBonds.get(hbidb);\n\t\tconst angle = this.halfBondAngle(hbida, hbidb);\n\t\ttotalAngle += (hbb.contra === hbida) ? Math.PI : angle; // back and forth along the same edge\n\t});\n\treturn Math.abs(totalAngle) < Math.PI;\n};\n\n/**\n * @returns { {\n * \t\tnewLoops: Array ,\n * \t\tbondsToMark: Array\n * } }\n */\nStruct.prototype.findLoops = function () {\n\tconst newLoops = [];\n\tconst bondsToMark = new Pile();\n\n\t/*\n\t \tStarting from each half-bond not known to be in a loop yet,\n\t \tfollow the 'next' links until the initial half-bond is reached or\n\t \tthe length of the sequence exceeds the number of half-bonds available.\n\t \tIn a planar graph, as long as every bond is a part of some \"loop\" -\n\t \teither an outer or an inner one - every iteration either yields a loop\n\t \tor doesn't start at all. Thus this has linear complexity in the number\n\t \tof bonds for planar graphs.\n\t */\n\n\tlet hbIdNext, c, loop, loopId;\n\tthis.halfBonds.forEach((hb, hbId) => {\n\t\tif (hb.loop !== -1)\n\t\t\treturn;\n\n\t\tfor (hbIdNext = hbId, c = 0, loop = []; c <= this.halfBonds.size; hbIdNext = this.halfBonds.get(hbIdNext).next, ++c) {\n\t\t\tif (!(c > 0 && hbIdNext === hbId)) {\n\t\t\t\tloop.push(hbIdNext);\n\t\t\t\tcontinue; // eslint-disable-line no-continue\n\t\t\t}\n\n\t\t\t// loop found\n\t\t\tconst subloops = this.partitionLoop(loop);\n\t\t\tsubloops.forEach((loop) => {\n\t\t\t\tif (this.loopIsInner(loop) && !this.loopHasSelfIntersections(loop)) {\n\t\t\t\t\t/*\n loop is internal\n use lowest half-bond id in the loop as the loop id\n this ensures that the loop gets the same id if it is discarded and then recreated,\n which in turn is required to enable redrawing while dragging, as actions store item id's\n */\n\t\t\t\t\tloopId = Math.min(...loop);\n\t\t\t\t\tthis.loops.set(loopId, new Loop(loop, this, this.loopIsConvex(loop)));\n\t\t\t\t} else {\n\t\t\t\t\tloopId = -2;\n\t\t\t\t}\n\n\t\t\t\tloop.forEach((hbid) => {\n\t\t\t\t\tthis.halfBonds.get(hbid).loop = loopId;\n\t\t\t\t\tbondsToMark.add(this.halfBonds.get(hbid).bid);\n\t\t\t\t});\n\n\t\t\t\tif (loopId >= 0)\n\t\t\t\t\tnewLoops.push(loopId);\n\t\t\t});\n\t\t\tbreak;\n\t\t}\n\t});\n\n\treturn {\n\t\tnewLoops,\n\t\tbondsToMark: Array.from(bondsToMark)\n\t};\n};\n\n// NB: this updates the structure without modifying the corresponding ReStruct.\n// To be applied to standalone structures only.\nStruct.prototype.prepareLoopStructure = function () {\n\tthis.initHalfBonds();\n\tthis.initNeighbors();\n\tthis.updateHalfBonds(Array.from(this.atoms.keys()));\n\tthis.sortNeighbors(Array.from(this.atoms.keys()));\n\tthis.findLoops();\n};\n\n/**\n * @param sgid { number }\n * @param aid { number }\n */\nStruct.prototype.atomAddToSGroup = function (sgid, aid) {\n\t// TODO: [MK] make sure the addition does not break the hierarchy?\n\tSGroup.addAtom(this.sgroups.get(sgid), aid);\n\tthis.atoms.get(aid).sgs.add(sgid);\n};\n\nStruct.prototype.calcConn = function (atom) {\n\tlet conn = 0;\n\tfor (let i = 0; i < atom.neighbors.length; ++i) {\n\t\tconst hb = this.halfBonds.get(atom.neighbors[i]);\n\t\tconst bond = this.bonds.get(hb.bid);\n\t\tswitch (bond.type) {\n\t\tcase Bond.PATTERN.TYPE.SINGLE:\n\t\t\tconn += 1;\n\t\t\tbreak;\n\t\tcase Bond.PATTERN.TYPE.DOUBLE:\n\t\t\tconn += 2;\n\t\t\tbreak;\n\t\tcase Bond.PATTERN.TYPE.TRIPLE:\n\t\t\tconn += 3;\n\t\t\tbreak;\n\t\tcase Bond.PATTERN.TYPE.AROMATIC:\n\t\t\tif (atom.neighbors.length === 1) return [-1, true];\n\t\t\treturn [atom.neighbors.length, true];\n\t\tdefault:\n\t\t\treturn [-1, false];\n\t\t}\n\t}\n\treturn [conn, false];\n};\n\nStruct.prototype.calcImplicitHydrogen = function (aid) {\n\tconst atom = this.atoms.get(aid);\n\tconst [conn, isAromatic] = this.calcConn(atom);\n\tlet correctConn = conn;\n\tatom.badConn = false;\n\n\tif (isAromatic) {\n\t\tif (atom.label === 'C' && atom.charge === 0) {\n\t\t\tif (conn === 3) {\n\t\t\t\tatom.implicitH = -radicalElectrons(atom.radical);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (conn === 2) {\n\t\t\t\tatom.implicitH = 1 - radicalElectrons(atom.radical);\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (\n\t\t\t(atom.label === 'O' && atom.charge === 0) ||\n\t\t\t(atom.label === 'N' && atom.charge === 0 && conn === 3) ||\n\t\t\t(atom.label === 'N' && atom.charge === 1 && conn === 3) ||\n\t\t\t(atom.label === 'S' && atom.charge === 0 && conn === 3)\n\t\t) {\n\t\t\tatom.implicitH = 0;\n\t\t\treturn;\n\t\t} else if (!atom.hasImplicitH) {\n\t\t\tcorrectConn++;\n\t\t}\n\t}\n\n\tif (correctConn < 0 || atom.isQuery()) {\n\t\tatom.implicitH = 0;\n\t\treturn;\n\t}\n\n\tif (atom.explicitValence >= 0) {\n\t\tconst elem = element.map[atom.label];\n\t\tatom.implicitH = elem !== null ? atom.explicitValence - atom.calcValenceMinusHyd(correctConn) : 0;\n\t\tif (atom.implicitH < 0) {\n\t\t\tatom.implicitH = 0;\n\t\t\tatom.badConn = true;\n\t\t}\n\t} else {\n\t\tatom.calcValence(correctConn);\n\t}\n};\n\nStruct.prototype.setImplicitHydrogen = function (list) {\n\tthis.sgroups.forEach((item) => {\n\t\tif (item.data.fieldName === 'MRV_IMPLICIT_H')\n\t\t\tthis.atoms.get(item.atoms[0]).hasImplicitH = true;\n\t});\n\n\tif (!list) {\n\t\tthis.atoms.forEach((atom, aid) => {\n\t\t\tthis.calcImplicitHydrogen(aid);\n\t\t});\n\t} else {\n\t\tlist.forEach((aid) => {\n\t\t\tthis.calcImplicitHydrogen(aid);\n\t\t});\n\t}\n};\n\n/**\n * @return {{reactants: Array>, products: Array>}}\n */\nStruct.prototype.getComponents = function () { // eslint-disable-line max-statements\n\t/* saver */\n\tconst connectedComponents = this.findConnectedComponents(true);\n\tconst barriers = [];\n\tlet arrowPos = null;\n\n\tthis.rxnArrows.forEach((item) => { // there's just one arrow\n\t\tarrowPos = item.pp.x;\n\t});\n\n\tthis.rxnPluses.forEach((item) => {\n\t\tbarriers.push(item.pp.x);\n\t});\n\n\tif (arrowPos !== null)\n\t\tbarriers.push(arrowPos);\n\n\tbarriers.sort((a, b) => a - b);\n\n\tconst components = [];\n\n\tconnectedComponents.forEach((component) => {\n\t\tconst bb = this.getCoordBoundingBox(component);\n\t\tconst c = Vec2.lc2(bb.min, 0.5, bb.max, 0.5);\n\t\tlet j = 0;\n\n\t\twhile (c.x > barriers[j])\n\t\t\t++j;\n\n\t\tcomponents[j] = components[j] || new Pile();\n\t\tcomponents[j] = components[j].union(component);\n\t});\n\n\tconst submolTexts = [];\n\tconst reactants = [];\n\tconst products = [];\n\n\tcomponents.forEach((component) => {\n\t\tif (!component) {\n\t\t\tsubmolTexts.push('');\n\t\t\treturn;\n\t\t}\n\n\t\tconst rxnFragmentType = this.defineRxnFragmentTypeForAtomset(component, arrowPos);\n\n\t\tif (rxnFragmentType === 1)\n\t\t\treactants.push(component);\n\t\telse\n\t\t\tproducts.push(component);\n\t});\n\n\treturn {\n\t\treactants,\n\t\tproducts\n\t};\n};\n\n/**\n * @param atomset { Pile }\n * @param arrowpos { number }\n * @returns { number }\n */\nStruct.prototype.defineRxnFragmentTypeForAtomset = function (atomset, arrowpos) {\n\tconst bb = this.getCoordBoundingBox(atomset);\n\tconst c = Vec2.lc2(bb.min, 0.5, bb.max, 0.5);\n\treturn c.x < arrowpos ? 1 : 2;\n};\n\n/**\n * @param bid { number }\n * @returns { number }\n */\nStruct.prototype.getBondFragment = function (bid) {\n\tconst aid = this.bonds.get(bid).begin;\n\treturn this.atoms.get(aid).fragment;\n};\n\n// Other struct objects\n\nfunction RxnPlus(params) {\n\tparams = params || {};\n\tthis.pp = params.pp ? new Vec2(params.pp) : new Vec2();\n}\n\nRxnPlus.prototype.clone = function () {\n\treturn new RxnPlus(this);\n};\n\nfunction RxnArrow(params) {\n\tparams = params || {};\n\tthis.pp = params.pp ? new Vec2(params.pp) : new Vec2();\n}\n\nRxnArrow.prototype.clone = function () {\n\treturn new RxnArrow(this);\n};\n\nfunction arrayAddIfMissing(array, item) {\n\tfor (var i = 0; i < array.length; ++i) {\n\t\tif (array[i] === item)\n\t\t\treturn false;\n\t}\n\tarray.push(item);\n\treturn true;\n}\n\nexport default Struct;\nexport {\n\tAtom,\n\tAtomList,\n\tBond,\n\tSGroup,\n\tRGroup,\n\tRxnPlus,\n\tRxnArrow\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Pile from '../../util/pile';\n\nfunction RGroup(logic) {\n\tlogic = logic || {};\n\tthis.frags = new Pile();\n\tthis.resth = logic.resth || false;\n\tthis.range = logic.range || '';\n\tthis.ifthen = logic.ifthen || 0;\n}\n\nRGroup.prototype.getAttrs = function () {\n\treturn {\n\t\tresth: this.resth,\n\t\trange: this.range,\n\t\tifthen: this.ifthen\n\t};\n};\n\n/**\n * @param rgroups { Pool }\n * @param frid { number }\n */\nRGroup.findRGroupByFragment = function (rgroups, frid) {\n\treturn rgroups.find((rgid, rgroup) => rgroup.frags.has(frid));\n};\n\n/**\n * @param fidMap { Map }\n * @returns { RGroup }\n */\nRGroup.prototype.clone = function (fidMap) {\n\tconst ret = new RGroup(this);\n\tthis.frags.forEach((fid) => {\n\t\tret.frags.add(fidMap ? fidMap.get(fid) : fid);\n\t});\n\treturn ret;\n};\n\nexport default RGroup;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Pool from '../../util/pool';\nimport Pile from '../../util/pile';\n\nfunction SGroupForest(molecule) {\n\tthis.parent = new Pool(); // child id -> parent id\n\tthis.children = new Pool(); // parent id -> list of child ids\n\tthis.children.set(-1, []); // extra root node\n\tthis.molecule = molecule;\n}\n\n// returns an array or s-group ids in the order of breadth-first search\nSGroupForest.prototype.getSGroupsBFS = function () {\n\tvar order = [];\n\tvar id = -1;\n\tvar queue = [].slice.call(this.children.get(-1));\n\twhile (queue.length > 0) {\n\t\tid = queue.shift();\n\t\tqueue = queue.concat(this.children.get(id));\n\t\torder.push(id);\n\t}\n\treturn order;\n};\n\n/**\n * @returns { Map< number, Pile > }\n */\nSGroupForest.prototype.getAtomSets = function () {\n\tconst map = new Map();\n\tthis.molecule.sgroups.forEach((sg, sgid) => {\n\t\tmap.set(sgid, new Pile(sg.atoms));\n\t});\n\treturn map;\n};\n\n/**\n * @param newId { number }\n * @param atoms { Pile }\n * @returns { { children, parent: number } }\n */\nSGroupForest.prototype.getAtomSetRelations = function (newId, atoms) {\n\t// find the lowest superset in the hierarchy\n\tconst isStrictSuperset = new Map();\n\tconst isSubset = new Map();\n\tconst atomSets = this.getAtomSets();\n\n\tatomSets.delete(newId);\n\n\tatomSets.forEach((atomSet, id) => {\n\t\tisSubset.set(id, atomSet.isSuperset(atoms));\n\t\tisStrictSuperset.set(id, atoms.isSuperset(atomSet) && !atomSet.equals(atoms));\n\t});\n\n\tconst parents = Array.from(atomSets.keys())\n\t\t.filter((sgid) => {\n\t\t\tif (!isSubset.get(sgid))\n\t\t\t\treturn false;\n\t\t\treturn this.children.get(sgid).findIndex(childId => isSubset.get(childId)) < 0;\n\t\t});\n\n\tconst children = Array.from(atomSets.keys())\n\t\t.filter(id => isStrictSuperset.get(id) && !isStrictSuperset.get(this.parent.get(id)));\n\n\treturn {\n\t\tchildren,\n\t\tparent: parents.length === 0 ? -1 : parents[0]\n\t};\n};\n\nSGroupForest.prototype.getPathToRoot = function (sgid) {\n\tvar path = [];\n\tfor (var id = sgid; id >= 0; id = this.parent.get(id)) {\n\t\tconsole.assert(path.indexOf(id) < 0, 'SGroupForest: loop detected');\n\t\tpath.push(id);\n\t}\n\treturn path;\n};\n\nSGroupForest.prototype.validate = function () {\n\tconst atomSets = this.getAtomSets();\n\n\tthis.molecule.sgroups.forEach((sg, sgid) => {\n\t\tthis.getPathToRoot(sgid); // this will throw an exception if there is a loop in the path to root\n\t});\n\n\tlet valid = true;\n\t// 1) child group's atom set is a subset of the parent one's\n\tthis.parent.forEach((parentId, id) => {\n\t\tif (parentId >= 0 && !atomSets.get(parentId).isSuperset(atomSets.get(id)))\n\t\t\tvalid = false;\n\t});\n\n\t// 2) siblings have disjoint atom sets\n\tthis.children.forEach((list) => {\n\t\tfor (let i = 0; i < list.length; ++i) {\n\t\t\tfor (let j = i + 1; j < list.length; ++j) {\n\t\t\t\tconst id1 = list[i];\n\t\t\t\tconst id2 = list[j];\n\t\t\t\tconst sg1 = this.molecule.sgroups.get(id1);\n\t\t\t\tconst sg2 = this.molecule.sgroups.get(id2);\n\n\t\t\t\tif (atomSets.get(id1).intersection(atomSets.get(id2)).size !== 0 && sg1.type !== 'DAT' && sg2.type !== 'DAT')\n\t\t\t\t\tvalid = false;\n\t\t\t}\n\t\t}\n\t});\n\treturn valid;\n};\n\nSGroupForest.prototype.insert = function (id, parent /* int, optional */, children /* [int], optional */) {\n\tconsole.assert(!this.parent.has(id), 'sgid already present in the forest');\n\tconsole.assert(!this.children.has(id), 'sgid already present in the forest');\n\tconsole.assert(this.validate(), 's-group forest invalid');\n\n\tvar atoms = new Pile(this.molecule.sgroups.get(id).atoms);\n\tif (!parent || !children) { // if these are not provided, deduce automatically\n\t\tvar guess = this.getAtomSetRelations(id, atoms);\n\t\tparent = guess.parent;\n\t\tchildren = guess.children;\n\t}\n\n\t// TODO: make children Map instead of Map?\n\tchildren.forEach((childId) => { // reset parent links\n\t\tvar childs = this.children.get(this.parent.get(childId));\n\t\tvar i = childs.indexOf(childId);\n\t\tconsole.assert(i >= 0 && childs.indexOf(childId, i + 1) < 0, 'Assertion failed'); // one element\n\t\tchilds.splice(i, 1);\n\t\tthis.parent.set(childId, id);\n\t});\n\tthis.children.set(id, children);\n\tthis.parent.set(id, parent);\n\tthis.children.get(parent).push(id);\n\tconsole.assert(this.validate(), 's-group forest invalid');\n\treturn { parent, children };\n};\n\nSGroupForest.prototype.remove = function (id) {\n\tconsole.assert(this.parent.has(id), 'sgid is not in the forest');\n\tconsole.assert(this.children.has(id), 'sgid is not in the forest');\n\tconsole.assert(this.validate(), 's-group forest invalid');\n\n\tvar parentId = this.parent.get(id);\n\tthis.children.get(id).forEach((childId) => { // reset parent links\n\t\tthis.parent.set(childId, parentId);\n\t\tthis.children.get(parentId).push(childId);\n\t});\n\n\tvar childs = this.children.get(parentId);\n\tvar i = childs.indexOf(id);\n\tconsole.assert(i >= 0 && childs.indexOf(id, i + 1) < 0, 'Assertion failed'); // one element\n\tchilds.splice(i, 1);\n\n\tthis.children.delete(id);\n\tthis.parent.delete(id);\n\tconsole.assert(this.validate(), 's-group forest invalid');\n};\n\nexport default SGroupForest;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Box2Abs from '../../util/box2abs';\nimport Vec2 from '../../util/vec2';\nimport Pile from '../../util/pile';\n\nimport Atom from './atom';\nimport Bond from './bond';\n\nfunction SGroup(type) { // eslint-disable-line max-statements\n\tconsole.assert(type && type in SGroup.TYPES, 'Invalid or unsupported s-group type');\n\n\tthis.type = type;\n\tthis.id = -1;\n\tthis.label = -1;\n\tthis.bracketBox = null;\n\tthis.bracketDir = new Vec2(1, 0);\n\tthis.areas = [];\n\n\tthis.highlight = false;\n\tthis.highlighting = null;\n\tthis.selected = false;\n\tthis.selectionPlate = null;\n\n\tthis.atoms = [];\n\tthis.patoms = [];\n\tthis.bonds = [];\n\tthis.xBonds = [];\n\tthis.neiAtoms = [];\n\tthis.pp = null;\n\tthis.data = {\n\t\tmul: 1, // multiplication count for MUL group\n\t\tconnectivity: 'ht', // head-to-head, head-to-tail or either-unknown\n\t\tname: '',\n\t\tsubscript: 'n',\n\n\t\t// data s-group fields\n\t\tattached: false,\n\t\tabsolute: true,\n\t\tshowUnits: false,\n\t\tnCharsToDisplay: -1,\n\t\ttagChar: '',\n\t\tdaspPos: 1,\n\t\tfieldType: 'F',\n\t\tfieldName: '',\n\t\tfieldValue: '',\n\t\tunits: '',\n\t\tquery: '',\n\t\tqueryOp: ''\n\t};\n}\n\nSGroup.TYPES = {\n\tMUL: 1,\n\tSRU: 2,\n\tSUP: 3,\n\tDAT: 4,\n\tGEN: 5\n};\n\n// TODO: these methods should be overridden\n// and should only accept valid attributes for each S-group type.\n// The attributes should be accessed via these methods only and not directly through this.data.\n// stub\nSGroup.prototype.getAttr = function (attr) {\n\treturn this.data[attr];\n};\n\n// TODO: should be group-specific\nSGroup.prototype.getAttrs = function () {\n\tvar attrs = {};\n\tObject.keys(this.data).forEach((attr) => {\n\t\tattrs[attr] = this.data[attr];\n\t});\n\treturn attrs;\n};\n\n// stub\nSGroup.prototype.setAttr = function (attr, value) {\n\tvar oldValue = this.data[attr];\n\tthis.data[attr] = value;\n\treturn oldValue;\n};\n\n// stub\nSGroup.prototype.checkAttr = function (attr, value) {\n\treturn this.data[attr] == value;\n};\n\n// SGroup.numberArrayToString = function (numbers, map) {\n// \tvar str = util.stringPadded(numbers.length, 3);\n// \tfor (var i = 0; i < numbers.length; ++i) {\n// \t\tstr += ' ' + util.stringPadded(map[numbers[i]], 3);\n// \t}\n// \treturn str;\n// };\n\nSGroup.filterAtoms = function (atoms, map) {\n\tvar newAtoms = [];\n\tfor (var i = 0; i < atoms.length; ++i) {\n\t\tvar aid = atoms[i];\n\t\tif (typeof (map[aid]) !== 'number')\n\t\t\tnewAtoms.push(aid);\n\t\telse if (map[aid] >= 0)\n\t\t\tnewAtoms.push(map[aid]);\n\t\telse\n\t\t\tnewAtoms.push(-1);\n\t}\n\treturn newAtoms;\n};\n\nSGroup.removeNegative = function (atoms) {\n\tvar newAtoms = [];\n\tfor (var j = 0; j < atoms.length; ++j) {\n\t\tif (atoms[j] >= 0)\n\t\t\tnewAtoms.push(atoms[j]);\n\t}\n\treturn newAtoms;\n};\n\nSGroup.filter = function (mol, sg, atomMap) {\n\tsg.atoms = SGroup.removeNegative(SGroup.filterAtoms(sg.atoms, atomMap));\n};\n\n/**\n * @param sgroup\n * @param aidMap < Map }\n * @returns { SGroup }\n */\nSGroup.clone = function (sgroup, aidMap) {\n\tconst cp = new SGroup(sgroup.type);\n\n\tObject.keys(sgroup.data).forEach((field) => {\n\t\tcp.data[field] = sgroup.data[field];\n\t});\n\n\tcp.atoms = sgroup.atoms.map(elem => aidMap.get(elem));\n\tcp.pp = sgroup.pp;\n\tcp.bracketBox = sgroup.bracketBox;\n\tcp.patoms = null;\n\tcp.bonds = null;\n\tcp.allAtoms = sgroup.allAtoms;\n\treturn cp;\n};\n\nSGroup.addAtom = function (sgroup, aid) {\n\tsgroup.atoms.push(aid);\n};\n\nSGroup.removeAtom = function (sgroup, aid) {\n\tfor (var i = 0; i < sgroup.atoms.length; ++i) {\n\t\tif (sgroup.atoms[i] === aid) {\n\t\t\tsgroup.atoms.splice(i, 1);\n\t\t\treturn;\n\t\t}\n\t}\n\tconsole.error('The atom is not found in the given s-group');\n};\n\n/**\n * @param inBonds\n * @param xBonds\n * @param mol\n * @param parentAtomSet { Pile }\n */\nSGroup.getCrossBonds = function (inBonds, xBonds, mol, parentAtomSet) {\n\tmol.bonds.forEach((bond, bid) => {\n\t\tif (parentAtomSet.has(bond.begin) && parentAtomSet.has(bond.end)) {\n\t\t\tif (inBonds !== null)\n\t\t\t\tinBonds.push(bid);\n\t\t} else if (parentAtomSet.has(bond.begin) || parentAtomSet.has(bond.end)) {\n\t\t\tif (xBonds !== null)\n\t\t\t\txBonds.push(bid);\n\t\t}\n\t});\n};\n\nSGroup.bracketPos = function (sg, mol, xbonds) { // eslint-disable-line max-statements\n\tvar atoms = sg.atoms;\n\tif (!xbonds || xbonds.length !== 2) {\n\t\tsg.bracketDir = new Vec2(1, 0);\n\t} else {\n\t\tvar p1 = mol.bonds.get(xbonds[0]).getCenter(mol);\n\t\tvar p2 = mol.bonds.get(xbonds[1]).getCenter(mol);\n\t\tsg.bracketDir = Vec2.diff(p2, p1).normalized();\n\t}\n\tvar d = sg.bracketDir;\n\n\tvar bb = null;\n\tvar contentBoxes = [];\n\tatoms.forEach((aid) => {\n\t\tvar atom = mol.atoms.get(aid);\n\t\tvar pos = new Vec2(atom.pp);\n\t\tvar ext = new Vec2(0.05 * 3, 0.05 * 3);\n\t\tvar bba = new Box2Abs(pos, pos).extend(ext, ext);\n\t\tcontentBoxes.push(bba);\n\t});\n\tcontentBoxes.forEach((bba) => {\n\t\tvar bbb = null;\n\t\t[bba.p0.x, bba.p1.x].forEach((x) => {\n\t\t\t[bba.p0.y, bba.p1.y].forEach((y) => {\n\t\t\t\tvar v = new Vec2(x, y);\n\t\t\t\tvar p = new Vec2(Vec2.dot(v, d), Vec2.dot(v, d.rotateSC(1, 0)));\n\t\t\t\tbbb = (bbb === null) ? new Box2Abs(p, p) : bbb.include(p);\n\t\t\t});\n\t\t});\n\t\tbb = (bb === null) ? bbb : Box2Abs.union(bb, bbb);\n\t});\n\tvar vext = new Vec2(0.2, 0.4);\n\tif (bb !== null) bb = bb.extend(vext, vext);\n\tsg.bracketBox = bb;\n};\n\n/**\n * @param mol\n * @param xbonds\n * @param atomSet { Pile }\n * @param bb\n * @param d\n * @param n\n * @returns { Array }\n */\nSGroup.getBracketParameters = function (mol, xbonds, atomSet, bb, d, n) { // eslint-disable-line max-params\n\tfunction BracketParams(c, d, w, h) {\n\t\tthis.c = c;\n\t\tthis.d = d;\n\t\tthis.n = d.rotateSC(1, 0);\n\t\tthis.w = w;\n\t\tthis.h = h;\n\t}\n\tvar brackets = [];\n\tif (xbonds.length < 2) {\n\t\t(function () {\n\t\t\td = d || new Vec2(1, 0);\n\t\t\tn = n || d.rotateSC(1, 0);\n\t\t\tvar bracketWidth = Math.min(0.25, bb.sz().x * 0.3);\n\t\t\tvar cl = Vec2.lc2(d, bb.p0.x, n, 0.5 * (bb.p0.y + bb.p1.y));\n\t\t\tvar cr = Vec2.lc2(d, bb.p1.x, n, 0.5 * (bb.p0.y + bb.p1.y));\n\t\t\tvar bracketHeight = bb.sz().y;\n\n\t\t\tbrackets.push(new BracketParams(cl, d.negated(), bracketWidth, bracketHeight), new BracketParams(cr, d, bracketWidth, bracketHeight));\n\t\t}());\n\t} else if (xbonds.length === 2) {\n\t\t(function () { // eslint-disable-line max-statements\n\t\t\tvar b1 = mol.bonds.get(xbonds[0]);\n\t\t\tvar b2 = mol.bonds.get(xbonds[1]);\n\t\t\tvar cl0 = b1.getCenter(mol);\n\t\t\tvar cr0 = b2.getCenter(mol);\n\t\t\tvar dr = Vec2.diff(cr0, cl0).normalized();\n\t\t\tvar dl = dr.negated();\n\n\t\t\tvar bracketWidth = 0.25;\n\t\t\tvar bracketHeight = 1.5;\n\t\t\tbrackets.push(\n\t\t\t\tnew BracketParams(cl0.addScaled(dl, 0), dl, bracketWidth, bracketHeight),\n\t\t\t\tnew BracketParams(cr0.addScaled(dr, 0), dr, bracketWidth, bracketHeight)\n\t\t\t);\n\t\t}());\n\t} else {\n\t\t(function () {\n\t\t\tfor (var i = 0; i < xbonds.length; ++i) {\n\t\t\t\tvar b = mol.bonds.get(xbonds[i]);\n\t\t\t\tvar c = b.getCenter(mol);\n\t\t\t\tvar d = atomSet.has(b.begin) ? b.getDir(mol) : b.getDir(mol).negated();\n\t\t\t\tbrackets.push(new BracketParams(c, d, 0.2, 1.0));\n\t\t\t}\n\t\t}());\n\t}\n\treturn brackets;\n};\n\nSGroup.getObjBBox = function (atoms, mol) {\n\tconsole.assert(atoms.length != 0, 'Atom list is empty');\n\n\tvar a0 = mol.atoms.get(atoms[0]).pp;\n\tvar bb = new Box2Abs(a0, a0);\n\tfor (var i = 1; i < atoms.length; ++i) {\n\t\tvar aid = atoms[i];\n\t\tvar atom = mol.atoms.get(aid);\n\t\tvar p = atom.pp;\n\t\tbb = bb.include(p);\n\t}\n\treturn bb;\n};\n\nSGroup.getAtoms = function (mol, sg) {\n\t/* shoud we use prototype? */\n\tif (!sg.allAtoms)\n\t\treturn sg.atoms;\n\tvar atoms = [];\n\tmol.atoms.forEach((atom, aid) => { atoms.push(aid); });\n\treturn atoms;\n};\n\nSGroup.getBonds = function (mol, sg) {\n\tvar atoms = SGroup.getAtoms(mol, sg);\n\tvar bonds = [];\n\tmol.bonds.forEach((bond, bid) => {\n\t\tif (atoms.indexOf(bond.begin) >= 0 && atoms.indexOf(bond.end) >= 0)\n\t\t\tbonds.push(bid);\n\t});\n\treturn bonds;\n};\n\nSGroup.prepareMulForSaving = function (sgroup, mol) { // eslint-disable-line max-statements\n\tsgroup.atoms.sort((a, b) => a - b);\n\tsgroup.atomSet = new Pile(sgroup.atoms);\n\tsgroup.parentAtomSet = new Pile(sgroup.atomSet);\n\tvar inBonds = [];\n\tvar xBonds = [];\n\n\tmol.bonds.forEach((bond, bid) => {\n\t\tif (sgroup.parentAtomSet.has(bond.begin) && sgroup.parentAtomSet.has(bond.end))\n\t\t\tinBonds.push(bid);\n\t\telse if (sgroup.parentAtomSet.has(bond.begin) || sgroup.parentAtomSet.has(bond.end))\n\t\t\txBonds.push(bid);\n\t});\n\n\tif (xBonds.length !== 0 && xBonds.length !== 2)\n\t\tthrow Error('Unsupported cross-bonds number');\n\n\tvar xAtom1 = -1;\n\tvar xAtom2 = -1;\n\tvar crossBond = null;\n\tif (xBonds.length === 2) {\n\t\tvar bond1 = mol.bonds.get(xBonds[0]);\n\t\txAtom1 = sgroup.parentAtomSet.has(bond1.begin) ? bond1.begin : bond1.end;\n\n\t\tvar bond2 = mol.bonds.get(xBonds[1]);\n\t\txAtom2 = sgroup.parentAtomSet.has(bond2.begin) ? bond2.begin : bond2.end;\n\t\tcrossBond = bond2;\n\t}\n\n\tvar amap = null;\n\tvar tailAtom = xAtom2;\n\n\tvar newAtoms = [];\n\tfor (var j = 0; j < sgroup.data.mul - 1; j++) {\n\t\tamap = {};\n\t\tsgroup.atoms.forEach((aid) => {\n\t\t\tvar atom = mol.atoms.get(aid);\n\t\t\tvar aid2 = mol.atoms.add(new Atom(atom));\n\t\t\tnewAtoms.push(aid2);\n\t\t\tsgroup.atomSet.add(aid2);\n\t\t\tamap[aid] = aid2;\n\t\t});\n\t\tinBonds.forEach((bid) => {\n\t\t\tvar bond = mol.bonds.get(bid);\n\t\t\tvar newBond = new Bond(bond);\n\t\t\tnewBond.begin = amap[newBond.begin];\n\t\t\tnewBond.end = amap[newBond.end];\n\t\t\tmol.bonds.add(newBond);\n\t\t});\n\t\tif (crossBond !== null) {\n\t\t\tvar newCrossBond = new Bond(crossBond);\n\t\t\tnewCrossBond.begin = tailAtom;\n\t\t\tnewCrossBond.end = amap[xAtom1];\n\t\t\tmol.bonds.add(newCrossBond);\n\t\t\ttailAtom = amap[xAtom2];\n\t\t}\n\t}\n\tif (tailAtom >= 0) {\n\t\tvar xBond2 = mol.bonds.get(xBonds[1]);\n\t\tif (xBond2.begin === xAtom2)\n\t\t\txBond2.begin = tailAtom;\n\t\telse\n\t\t\txBond2.end = tailAtom;\n\t}\n\tsgroup.bonds = xBonds;\n\n\tnewAtoms.forEach((aid) => {\n\t\tmol.sGroupForest.getPathToRoot(sgroup.id).reverse().forEach((sgid) => {\n\t\t\tmol.atomAddToSGroup(sgid, aid);\n\t\t});\n\t});\n};\n\nSGroup.getMassCentre = function (mol, atoms) {\n\tvar c = new Vec2(); // mass centre\n\tfor (var i = 0; i < atoms.length; ++i)\n\t\tc = c.addScaled(mol.atoms.get(atoms[i]).pp, 1.0 / atoms.length);\n\treturn c;\n};\n\nexport default SGroup;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport molfile from '../../chem/molfile';\nimport { Bond } from '../../chem/struct';\n\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\n/**\n * @param restruct { ReStruct }\n * @param events { Array }\n * @param bid { number }\n * @param template {{\n * \t\tmolecule: Struct,\n * \t\tbid: number\n * }}\n * @param simpleFusing { Function }\n * @returns { Promise }\n */\nexport function fromAromaticTemplateOnBond(restruct, template, bid, events, simpleFusing) {\n\tconst tmpl = template.molecule;\n\tconst struct = restruct.molecule;\n\n\tconst frid = struct.getBondFragment(bid);\n\tconst beforeMerge = getFragmentWithBondMap(struct, frid);\n\tlet afterMerge = null;\n\tlet pasteItems = null;\n\n\tlet action = new Action();\n\n\tif (!canBeAromatized(beforeMerge.frag) || !canBeAromatized(tmpl)) {\n\t\taction = simpleFusing(restruct, template, bid);\n\t\treturn Promise.resolve(action);\n\t}\n\n\treturn Promise.all([\n\t\tevents.aromatizeStruct.dispatch(beforeMerge.frag).then(res => molfile.parse(res.struct)),\n\t\tevents.aromatizeStruct.dispatch(tmpl).then(res => molfile.parse(res.struct))\n\t]).then(([astruct, atmpl]) => {\n\t\t// aromatize restruct fragment\n\t\tconst aromatizeAction = fromAromatize(restruct, astruct, beforeMerge.bondMap);\n\t\t// merge template with fragment\n\t\tconst aromTemplate = { bid: template.bid, molecule: atmpl };\n\t\tconst templateFusingAction = simpleFusing(restruct, aromTemplate, bid);\n\t\tpasteItems = templateFusingAction[1];\n\n\t\taction = templateFusingAction[0].mergeWith(aromatizeAction);\n\n\t\tafterMerge = getFragmentWithBondMap(restruct.molecule, frid);\n\n\t\treturn events.dearomatizeStruct.dispatch(afterMerge.frag)\n\t\t\t.then(res => molfile.parse(res.struct));\n\t}).then((destruct) => {\n\t\tdestruct.bonds.forEach((bond) => {\n\t\t\tif (bond.type === Bond.PATTERN.TYPE.AROMATIC)\n\t\t\t\tthrow Error('Bad dearomatize');\n\t\t});\n\n\t\t// dearomatize restruct fragment\n\t\tconst dearomatizeAction = fromDearomatize(restruct, destruct, afterMerge.bondMap);\n\t\taction = dearomatizeAction.mergeWith(action);\n\n\t\treturn [action, pasteItems];\n\t}).catch((err) => {\n\t\tconsole.info(err.message);\n\t\taction.perform(restruct); // revert actions if error\n\n\t\treturn simpleFusing(restruct, template, bid);\n\t});\n}\n\nfunction fromAromatize(restruct, astruct, bondMap) {\n\tconst action = new Action();\n\n\tastruct.bonds.forEach((bond, bid) => {\n\t\tif (bond.type !== Bond.PATTERN.TYPE.AROMATIC) return;\n\t\taction.addOp(\n\t\t\tnew op.BondAttr(bondMap.get(bid), 'type', Bond.PATTERN.TYPE.AROMATIC)\n\t\t\t\t.perform(restruct)\n\t\t);\n\t});\n\n\treturn action;\n}\n\n/**\n * @param restruct { ReStruct }\n * @param dastruct { ReStruct }\n * @param bondMap { Map }\n * @returns { Action }\n */\nfunction fromDearomatize(restruct, dastruct, bondMap) {\n\tconst action = new Action();\n\n\tdastruct.bonds.forEach((bond, bid) => {\n\t\taction.addOp(\n\t\t\tnew op.BondAttr(bondMap.get(bid), 'type', bond.type)\n\t\t\t\t.perform(restruct)\n\t\t);\n\t});\n\n\treturn action;\n}\n\n/* UTILS */\n\nfunction canBeAromatized(struct) { // TODO correct this checking && move to chem.Struct ??\n\tif (struct.loops.size === 0) struct.prepareLoopStructure();\n\n\tconst hasAromLoop = struct.loops.find((id, loop) => loop.aromatic);\n\tif (struct.loops.size === 0 || hasAromLoop) return false;\n\n\tconst correctDblBonds = struct.loops.find((id, loop) =>\n\t\tloop.dblBonds === (loop.hbs.length / 2));\n\n\treturn correctDblBonds !== undefined;\n}\n\n/**\n * @param struct { Struct }\n * @param frid { number }\n * @returns {{\n * \t\tfrag: Struct,\n * \t\tbondMap: Map\n * }}\n */\nfunction getFragmentWithBondMap(struct, frid) {\n\tconst atomSet = struct.getFragmentIds(frid);\n\tconst atomsInStruct = Array.from(atomSet);\n\n\tconst frag = struct.clone(atomSet);\n\tconst bondMap = new Map();\n\tfrag.bonds.forEach((bond, bid) => {\n\t\tbondMap.set(bid, struct.findBondId(atomsInStruct[bond.begin], atomsInStruct[bond.end]));\n\t});\n\n\treturn { frag, bondMap };\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\nimport { without } from 'lodash/fp';\n\nimport { Atom, Bond, RGroup } from '../../chem/struct';\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\nimport { atomGetAttr, atomGetDegree, atomGetNeighbors, atomGetSGroups } from './utils';\nimport { removeSgroupIfNeeded, removeAtomFromSgroupIfNeeded } from './sgroup';\nimport { fromRGroupFragment, fromUpdateIfThen } from './rgroup';\nimport { fromFragmentSplit } from './fragment';\n\nexport function fromAtomAddition(restruct, pos, atom) {\n\tatom = Object.assign({}, atom);\n\tconst action = new Action();\n\tatom.fragment = action.addOp(new op.FragmentAdd().perform(restruct)).frid;\n\taction.addOp(new op.AtomAdd(atom, pos).perform(restruct));\n\treturn action;\n}\n\nexport function fromAtomDeletion(restruct, id) {\n\tlet action = new Action();\n\tconst atomsToRemove = [];\n\n\tconst frid = restruct.molecule.atoms.get(id).fragment;\n\n\tatomGetNeighbors(restruct, id).forEach((nei) => {\n\t\taction.addOp(new op.BondDelete(nei.bid));// [RB] !!\n\n\t\tif (atomGetDegree(restruct, nei.aid) !== 1)\n\t\t\treturn;\n\n\t\tif (removeAtomFromSgroupIfNeeded(action, restruct, nei.aid))\n\t\t\tatomsToRemove.push(nei.aid);\n\n\t\taction.addOp(new op.AtomDelete(nei.aid));\n\t});\n\n\tif (removeAtomFromSgroupIfNeeded(action, restruct, id))\n\t\tatomsToRemove.push(id);\n\n\taction.addOp(new op.AtomDelete(id));\n\n\tremoveSgroupIfNeeded(action, restruct, atomsToRemove);\n\n\taction = action.perform(restruct);\n\n\taction.mergeWith(fromFragmentSplit(restruct, frid));\n\n\treturn action;\n}\n\n/**\n * @param restruct { ReStruct }\n * @param ids { Array|number }\n * @param attrs { object }\n * @param reset { boolean? }\n */\nexport function fromAtomsAttrs(restruct, ids, attrs, reset) {\n\tconst action = new Action();\n\tconst aids = Array.isArray(ids) ? ids : [ids];\n\n\taids.forEach((aid) => {\n\t\tObject.keys(Atom.attrlist).forEach((key) => {\n\t\t\tif (key === 'attpnt' && !(key in attrs))\n\t\t\t\treturn;\n\t\t\tif (!(key in attrs) && !reset)\n\t\t\t\treturn;\n\n\t\t\tconst value = (key in attrs) ? attrs[key] : Atom.attrGetDefault(key);\n\t\t\taction.addOp(new op.AtomAttr(aid, key, value));\n\t\t});\n\n\t\tif (!reset && 'label' in attrs && attrs.label !== null && attrs.label !== 'L#' && !attrs['atomList'])\n\t\t\taction.addOp(new op.AtomAttr(aid, 'atomList', null));\n\t});\n\n\treturn action.perform(restruct);\n}\n\n/**\n * @param restruct { ReStruct }\n * @param srcId { number }\n * @param dstId { number }\n * @return { Action }\n */\nexport function fromAtomMerge(restruct, srcId, dstId) {\n\tif (srcId === dstId)\n\t\treturn new Action();\n\n\tconst fragAction = new Action();\n\tmergeFragmentsIfNeeded(fragAction, restruct, srcId, dstId);\n\n\tconst action = new Action();\n\n\tatomGetNeighbors(restruct, srcId).forEach((nei) => {\n\t\tconst bond = restruct.molecule.bonds.get(nei.bid);\n\n\t\tif (dstId === bond.begin || dstId === bond.end) { // src & dst have one nei\n\t\t\taction.addOp(new op.BondDelete(nei.bid));\n\t\t\treturn;\n\t\t}\n\n\t\tconst begin = bond.begin === nei.aid ? nei.aid : dstId;\n\t\tconst end = bond.begin === nei.aid ? dstId : nei.aid;\n\n\t\tconst mergeBondId = restruct.molecule.findBondId(begin, end);\n\n\t\tif (mergeBondId === null) {\n\t\t\taction.addOp(new op.BondAdd(begin, end, bond));\n\t\t} else { // replace old bond with new bond\n\t\t\tconst attrs = Bond.getAttrHash(bond);\n\t\t\tObject.keys(attrs).forEach((key) => {\n\t\t\t\taction.addOp(new op.BondAttr(mergeBondId, key, attrs[key]));\n\t\t\t});\n\t\t}\n\n\t\taction.addOp(new op.BondDelete(nei.bid));\n\t});\n\n\tconst attrs = Atom.getAttrHash(restruct.molecule.atoms.get(srcId));\n\n\tif (atomGetDegree(restruct, srcId) === 1 && attrs['label'] === '*')\n\t\tattrs['label'] = 'C';\n\n\tObject.keys(attrs).forEach((key) => {\n\t\taction.addOp(new op.AtomAttr(dstId, key, attrs[key]));\n\t});\n\n\tconst sgChanged = removeAtomFromSgroupIfNeeded(action, restruct, srcId);\n\n\tif (sgChanged)\n\t\tremoveSgroupIfNeeded(action, restruct, [srcId]);\n\n\taction.addOp(new op.AtomDelete(srcId));\n\n\treturn action.perform(restruct).mergeWith(fragAction);\n}\n\nexport function mergeFragmentsIfNeeded(action, restruct, srcId, dstId) {\n\tconst frid = atomGetAttr(restruct, srcId, 'fragment');\n\tconst frid2 = atomGetAttr(restruct, dstId, 'fragment');\n\tif (frid2 === frid || (typeof frid2 !== 'number')) return;\n\n\tconst struct = restruct.molecule;\n\n\tconst rgid = RGroup.findRGroupByFragment(struct.rgroups, frid2);\n\tif (!(typeof rgid === 'undefined')) {\n\t\taction.mergeWith(fromRGroupFragment(restruct, null, frid2))\n\t\t\t.mergeWith(fromUpdateIfThen(restruct, 0, rgid));\n\t}\n\n\tconst fridAtoms = struct.getFragmentIds(frid);\n\n\tstruct.atoms.forEach((atom, aid) => {\n\t\tif (atom.fragment === frid2)\n\t\t\taction.addOp(new op.AtomAttr(aid, 'fragment', frid).perform(restruct));\n\t});\n\n\tmergeSgroups(action, restruct, fridAtoms, dstId);\n\taction.addOp(new op.FragmentDelete(frid2).perform(restruct));\n}\n\nexport function mergeSgroups(action, restruct, srcAtoms, dstAtom) {\n\tconst sgroups = atomGetSGroups(restruct, dstAtom);\n\n\tsgroups.forEach((sid) => {\n\t\tconst sgroup = restruct.molecule.sgroups.get(sid);\n\t\tconst notExpandedContexts = ['Atom', 'Bond', 'Group'];\n\t\tif (sgroup.type === 'DAT' && notExpandedContexts.includes(sgroup.data.context))\n\t\t\treturn;\n\t\tconst atomsToSgroup = without(sgroup.atoms, srcAtoms);\n\t\tatomsToSgroup.forEach(aid => action.addOp(new op.SGroupAtomAdd(sid, aid).perform(restruct)));\n\t});\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\nexport function fromNewCanvas(restruct, struct) {\n\tvar action = new Action();\n\n\taction.addOp(new op.CanvasLoad(struct));\n\treturn action.perform(restruct);\n}\n\nexport function fromDescriptorsAlign(restruct) {\n\tconst action = new Action();\n\taction.addOp(new op.AlignDescriptors(restruct));\n\treturn action.perform(restruct);\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Bond } from '../../chem/struct';\n\nimport op from '../shared/op';\nimport utils from '../shared/utils';\nimport Action from '../shared/action';\n\nimport { atomGetAttr, atomForNewBond, atomGetDegree } from './utils';\nimport { fromAtomMerge, mergeFragmentsIfNeeded, mergeSgroups } from './atom';\nimport { removeSgroupIfNeeded, removeAtomFromSgroupIfNeeded } from './sgroup';\nimport { fromFragmentSplit } from './fragment';\n\nexport function fromBondAddition(restruct, bond, begin, end, pos, pos2) { // eslint-disable-line\n\tif (end === undefined) {\n\t\tconst atom = atomForNewBond(restruct, begin);\n\t\tend = atom.atom;\n\t\tpos = atom.pos;\n\t}\n\tconst action = new Action();\n\n\tlet frid = null;\n\n\tif (!(typeof begin === 'number')) {\n\t\tif (typeof end === 'number')\n\t\t\tfrid = atomGetAttr(restruct, end, 'fragment');\n\t} else {\n\t\tfrid = atomGetAttr(restruct, begin, 'fragment');\n\t\tif (typeof end === 'number')\n\t\t\tmergeFragmentsIfNeeded(action, restruct, begin, end);\n\t}\n\n\tif (frid == null)\n\t\tfrid = action.addOp(new op.FragmentAdd().perform(restruct)).frid;\n\n\tif (!(typeof begin === 'number')) {\n\t\tbegin.fragment = frid;\n\t\tbegin = action.addOp(new op.AtomAdd(begin, pos).perform(restruct)).data.aid;\n\t\tif (typeof end === 'number')\n\t\t\tmergeSgroups(action, restruct, [begin], end);\n\t\tpos = pos2;\n\t} else if (atomGetAttr(restruct, begin, 'label') === '*') {\n\t\taction.addOp(new op.AtomAttr(begin, 'label', 'C').perform(restruct));\n\t}\n\n\tif (!(typeof end === 'number')) {\n\t\tend.fragment = frid;\n\t\t// TODO: .data.aid here is a hack, need a better way to access the id of a created atom\n\t\tend = action.addOp(new op.AtomAdd(end, pos).perform(restruct)).data.aid;\n\t\tif (typeof begin === 'number')\n\t\t\tmergeSgroups(action, restruct, [end], begin);\n\t} else if (atomGetAttr(restruct, end, 'label') === '*') {\n\t\taction.addOp(new op.AtomAttr(end, 'label', 'C').perform(restruct));\n\t}\n\n\tconst bid = action.addOp(new op.BondAdd(begin, end, bond).perform(restruct)).data.bid;\n\taction.operations.reverse();\n\n\treturn [action, begin, end, bid];\n}\n\nexport function fromBondDeletion(restruct, id) {\n\tvar action = new Action();\n\tvar bond = restruct.molecule.bonds.get(id);\n\tvar frid = restruct.molecule.atoms.get(bond.begin).fragment;\n\tvar atomsToRemove = [];\n\n\taction.addOp(new op.BondDelete(id));\n\n\tif (atomGetDegree(restruct, bond.begin) === 1) {\n\t\tif (removeAtomFromSgroupIfNeeded(action, restruct, bond.begin))\n\t\t\tatomsToRemove.push(bond.begin);\n\n\t\taction.addOp(new op.AtomDelete(bond.begin));\n\t}\n\n\tif (atomGetDegree(restruct, bond.end) === 1) {\n\t\tif (removeAtomFromSgroupIfNeeded(action, restruct, bond.end))\n\t\t\tatomsToRemove.push(bond.end);\n\n\t\taction.addOp(new op.AtomDelete(bond.end));\n\t}\n\n\tremoveSgroupIfNeeded(action, restruct, atomsToRemove);\n\n\taction = action.perform(restruct);\n\n\taction.mergeWith(fromFragmentSplit(restruct, frid));\n\n\treturn action;\n}\n\n/**\n * @param restruct { ReStruct }\n * @param ids { Array|number }\n * @param attrs { Bond }\n * @param reset? { boolean }\n */\nexport function fromBondsAttrs(restruct, ids, attrs, reset) {\n\tconst action = new Action();\n\tconst bids = Array.isArray(ids) ? ids : [ids];\n\n\tbids.forEach((bid) => {\n\t\tObject.keys(Bond.attrlist).forEach((key) => {\n\t\t\tif (!(key in attrs) && !reset)\n\t\t\t\treturn;\n\n\t\t\tconst value = (key in attrs) ? attrs[key] : Bond.attrGetDefault(key);\n\t\t\taction.addOp(new op.BondAttr(bid, key, value));\n\t\t});\n\t});\n\n\treturn action.perform(restruct);\n}\n\n/**\n * @param restruct { ReStruct }\n * @param mergeMap { Map }\n */\nexport function fromBondsMerge(restruct, mergeMap) {\n\tconst struct = restruct.molecule;\n\n\tconst atomPairs = new Map();\n\tlet action = new Action();\n\n\tmergeMap.forEach((dstId, srcId) => {\n\t\tconst bond = struct.bonds.get(srcId);\n\t\tconst bondCI = struct.bonds.get(dstId);\n\n\t\tconst params = utils.mergeBondsParams(struct, bond, struct, bondCI);\n\t\tif (!params.merged) return;\n\n\t\tatomPairs.set(bond.begin, !params.cross ? bondCI.begin : bondCI.end);\n\t\tatomPairs.set(bond.end, !params.cross ? bondCI.end : bondCI.begin);\n\t});\n\n\tatomPairs.forEach((dst, src) => {\n\t\taction = fromAtomMerge(restruct, src, dst).mergeWith(action);\n\t});\n\n\treturn action;\n}\n\nfunction fromBondFlipping(restruct, id) {\n\tconst bond = restruct.molecule.bonds.get(id);\n\n\tconst action = new Action();\n\taction.addOp(new op.BondDelete(id));\n\taction.addOp(new op.BondAdd(bond.end, bond.begin, bond)).data.bid = id;\n\treturn action.perform(restruct);\n}\n\n/**\n * @param restruct { ReStruct }\n * @param itemID - bond id in structure\n * @param bond - bond for change\n * @param bondProps - bondTool properties\n * @returns Action\n */\nexport function bondChangingAction(restruct, itemID, bond, bondProps) {\n\tif (bondProps.stereo !== Bond.PATTERN.STEREO.NONE && //\n\t\tbondProps.type === Bond.PATTERN.TYPE.SINGLE &&\n\t\tbond.type === bondProps.type && bond.stereo === bondProps.stereo)\n\t// if bondTool is stereo and equal to bond for change\n\t\treturn fromBondFlipping(restruct, itemID);\n\n\tconst loop = plainBondTypes.includes(bondProps.type) ? plainBondTypes : null;\n\tif (bondProps.stereo === Bond.PATTERN.STEREO.NONE &&\n\t\tbondProps.type === Bond.PATTERN.TYPE.SINGLE &&\n\t\tbond.stereo === Bond.PATTERN.STEREO.NONE &&\n\t\tloop)\n\t// if `Single bond` tool is chosen and bond for change in `plainBondTypes`\n\t\tbondProps.type = loop[(loop.indexOf(bond.type) + 1) % loop.length];\n\n\tconst isFlip = bondFlipRequired(restruct.molecule, bond, bondProps);\n\tconst action = isFlip ? fromBondFlipping(restruct, itemID) : new Action();\n\n\treturn fromBondsAttrs(restruct, itemID, bondProps).mergeWith(action);\n}\n\nfunction bondFlipRequired(struct, bond, attrs) {\n\treturn attrs.type === Bond.PATTERN.TYPE.SINGLE &&\n\t\tbond.stereo === Bond.PATTERN.STEREO.NONE &&\n\t\tattrs.stereo !== Bond.PATTERN.STEREO.NONE &&\n\t\tstruct.atoms.get(bond.begin).neighbors.length <\n\t\tstruct.atoms.get(bond.end).neighbors.length;\n}\n\nconst plainBondTypes = [\n\tBond.PATTERN.TYPE.SINGLE,\n\tBond.PATTERN.TYPE.DOUBLE,\n\tBond.PATTERN.TYPE.TRIPLE\n];\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\n\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\nimport { atomGetAttr } from './utils';\nimport { fromBondAddition } from './bond';\n\nexport function fromChain(restruct, p0, v, nSect, atomId) { // eslint-disable-line max-params\n\tconst dx = Math.cos(Math.PI / 6);\n\tconst dy = Math.sin(Math.PI / 6);\n\n\tlet action = new Action();\n\n\tconst frid = atomId !== null ?\n\t\tatomGetAttr(restruct, atomId, 'fragment') :\n\t\taction.addOp(new op.FragmentAdd().perform(restruct)).frid;\n\n\tconst chainItems = {\n\t\tatoms: [],\n\t\tbonds: []\n\t};\n\n\tlet id0 = atomId !== null ?\n\t\tatomId :\n\t\taction.addOp(new op.AtomAdd({ label: 'C', fragment: frid }, p0).perform(restruct)).data.aid;\n\n\tchainItems.atoms.push(id0);\n\taction.operations.reverse();\n\n\tfor (let i = 0; i < nSect; i++) {\n\t\tconst pos = new Vec2(dx * (i + 1), i & 1 ? 0 : dy).rotate(v).add(p0);\n\n\t\tconst ret = fromBondAddition(restruct, {}, id0, {}, pos);\n\t\taction = ret[0].mergeWith(action);\n\t\tid0 = ret[2];\n\t\tchainItems.bonds.push(ret[3]);\n\t\tchainItems.atoms.push(id0);\n\t}\n\n\treturn [action, chainItems];\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\n\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\nexport function fromChiralFlagAddition(restruct, pos) { // eslint-disable-line no-unused-vars\n\tvar action = new Action();\n\tvar struct = restruct.molecule;\n\tif (restruct.chiralFlags.size < 1) {\n\t\tif (!pos) {\n\t\t\tvar bb = struct.getCoordBoundingBox();\n\t\t\tvar posY = !struct.isBlank() ? bb.min.y - 1 : bb.min.y + 1;\n\t\t\tpos = new Vec2(bb.max.x, posY);\n\t\t}\n\t\taction.addOp(new op.ChiralFlagAdd(pos).perform(restruct));\n\t}\n\treturn action;\n}\n\nexport function fromChiralFlagDeletion(restruct) {\n\tvar action = new Action();\n\taction.addOp(new op.ChiralFlagDelete());\n\treturn action.perform(restruct);\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Action from '../shared/action';\nimport utils from '../shared/utils';\nimport { fromBondsMerge } from './bond';\nimport { fromAtomMerge } from './atom';\n\nexport function fromItemsFuse(restruct, items) {\n\tlet action = new Action();\n\n\tif (!items)\n\t\treturn action;\n\n\tconst usedAtoms = new Set();\n\n\t// merge single atoms\n\titems.atoms.forEach((dst, src) => {\n\t\tif (usedAtoms.has(dst) || usedAtoms.has(src))\n\t\t\treturn;\n\n\t\taction = fromAtomMerge(restruct, src, dst).mergeWith(action);\n\t\tusedAtoms.add(dst).add(src);\n\t});\n\n\t// merge bonds\n\taction = fromBondsMerge(restruct, items.bonds).mergeWith(action);\n\n\treturn action;\n}\n\nexport function getItemsToFuse(editor, items) {\n\tconst struct = editor.render.ctab.molecule;\n\n\tconst mergeItems = items || (\n\t\t{\n\t\t\tatoms: Array.from(struct.atoms.keys()),\n\t\t\tbonds: Array.from(struct.bonds.keys())\n\t\t}\n\t);\n\n\treturn closestToMerge(struct, editor.findMerge(mergeItems, ['atoms', 'bonds']));\n}\n\nexport function getHoverToFuse(items) {\n\tif (!items) return null;\n\n\tconst hoverItems = {\n\t\tatoms: Array.from(items.atoms.values()),\n\t\tbonds: Array.from(items.bonds.values())\n\t};\n\n\treturn { map: 'merge', id: +Date.now(), items: hoverItems };\n}\n\n/**\n * @param struct\n * @param closestMap {{\n * \t\tatoms: Map,\n * \t\tbonds: Map\n * }}\n * @return {{\n * \t\tatoms: Map,\n * \t\tbonds: Map\n * }}\n */\nfunction closestToMerge(struct, closestMap) {\n\tconst mergeMap = {\n\t\tatoms: new Map(closestMap.atoms),\n\t\tbonds: new Map(closestMap.bonds)\n\t};\n\n\tclosestMap.bonds.forEach((dstId, srcId) => {\n\t\tconst bond = struct.bonds.get(srcId);\n\t\tconst bondCI = struct.bonds.get(dstId);\n\n\t\tif (utils.mergeBondsParams(struct, bond, struct, bondCI).merged) {\n\t\t\tmergeMap.atoms.delete(bond.begin);\n\t\t\tmergeMap.atoms.delete(bond.end);\n\t\t} else {\n\t\t\tmergeMap.bonds.delete(srcId);\n\t\t}\n\t});\n\n\tif (mergeMap.atoms.size === 0 && mergeMap.bonds.size === 0)\n\t\treturn null;\n\n\treturn mergeMap;\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport Pile from '../../util/pile';\nimport { RGroup } from '../../chem/struct';\n\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\nimport { atomGetDegree, atomGetNeighbors, getRelSgroupsBySelection } from './utils';\nimport { removeSgroupIfNeeded, removeAtomFromSgroupIfNeeded, fromSgroupDeletion } from './sgroup';\nimport { fromRGroupFragment, fromUpdateIfThen } from './rgroup';\n\nexport function fromMultipleMove(restruct, lists, d) {\n\td = new Vec2(d);\n\n\tconst action = new Action();\n\tconst struct = restruct.molecule;\n\tconst loops = new Pile();\n\tconst atomsToInvalidate = new Pile();\n\n\tif (lists.atoms) {\n\t\tconst atomSet = new Pile(lists.atoms);\n\t\tconst bondlist = [];\n\n\t\trestruct.bonds.forEach((bond, bid) => {\n\t\t\tif (atomSet.has(bond.b.begin) && atomSet.has(bond.b.end)) {\n\t\t\t\tbondlist.push(bid);\n\t\t\t\t// add all adjacent loops\n\t\t\t\t// those that are not completely inside the structure will get redrawn anyway\n\t\t\t\t['hb1', 'hb2'].forEach((hb) => {\n\t\t\t\t\tconst loop = struct.halfBonds.get(bond.b[hb]).loop;\n\t\t\t\t\tif (loop >= 0)\n\t\t\t\t\t\tloops.add(loop);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (atomSet.has(bond.b.begin)) {\n\t\t\t\tatomsToInvalidate.add(bond.b.begin);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (atomSet.has(bond.b.end))\n\t\t\t\tatomsToInvalidate.add(bond.b.end);\n\t\t});\n\n\t\tbondlist.forEach((bond) => {\n\t\t\taction.addOp(new op.BondMove(bond, d));\n\t\t});\n\n\t\tloops.forEach((loopId) => {\n\t\t\tif (restruct.reloops.get(loopId) && restruct.reloops.get(loopId).visel) // hack\n\t\t\t\taction.addOp(new op.LoopMove(loopId, d));\n\t\t});\n\n\t\tlists.atoms.forEach((aid) => {\n\t\t\taction.addOp(new op.AtomMove(aid, d, !atomsToInvalidate.has(aid)));\n\t\t});\n\n\t\tif (lists.sgroupData && lists.sgroupData.length === 0) {\n\t\t\tconst sgroups = getRelSgroupsBySelection(restruct, lists.atoms);\n\t\t\tsgroups.forEach((sg) => {\n\t\t\t\taction.addOp(new op.SGroupDataMove(sg.id, d));\n\t\t\t});\n\t\t}\n\t}\n\n\tif (lists.rxnArrows) {\n\t\tlists.rxnArrows.forEach((rxnArrow) => {\n\t\t\taction.addOp(new op.RxnArrowMove(rxnArrow, d, true));\n\t\t});\n\t}\n\n\tif (lists.rxnPluses) {\n\t\tlists.rxnPluses.forEach((rxnPulse) => {\n\t\t\taction.addOp(new op.RxnPlusMove(rxnPulse, d, true));\n\t\t});\n\t}\n\n\tif (lists.sgroupData) {\n\t\tlists.sgroupData.forEach((sgData) => {\n\t\t\taction.addOp(new op.SGroupDataMove(sgData, d));\n\t\t});\n\t}\n\n\tif (lists.chiralFlags && struct.isChiral) {\n\t\tlists.chiralFlags.forEach(() => {\n\t\t\taction.addOp(new op.ChiralFlagMove(d));\n\t\t});\n\t}\n\n\treturn action.perform(restruct);\n}\n\n/**\n * @param restruct { ReStruct }\n * @param aid { number }\n * @param frid { number }\n * @param newfrid { number }\n * @returns { Action }\n */\nfunction processAtom(restruct, aid, frid, newfrid) {\n\tconst action = new Action();\n\tconst queue = [aid];\n\tconst usedIds = new Pile(queue);\n\n\twhile (queue.length > 0) {\n\t\tconst id = queue.shift();\n\t\taction.addOp(new op.AtomAttr(id, 'fragment', newfrid).perform(restruct));\n\n\t\tatomGetNeighbors(restruct, id).forEach((nei) => {\n\t\t\tif (restruct.molecule.atoms.get(nei.aid).fragment === frid && !usedIds.has(nei.aid)) {\n\t\t\t\tusedIds.add(nei.aid);\n\t\t\t\tqueue.push(nei.aid);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn action;\n}\n\n/**\n * @param restruct { ReStruct }\n * @param frid { number }\n * @param rgForRemove\n * @return { Action }\n */\n// TODO [RB] the thing is too tricky :) need something else in future\nexport function fromFragmentSplit(restruct, frid, rgForRemove = []) {\n\tvar action = new Action();\n\tvar rgid = RGroup.findRGroupByFragment(restruct.molecule.rgroups, frid);\n\n\trestruct.molecule.atoms.forEach((atom, aid) => {\n\t\tif (atom.fragment === frid) {\n\t\t\tconst newfrid = action.addOp(new op.FragmentAdd().perform(restruct)).frid;\n\n\t\t\taction.mergeWith(processAtom(restruct, aid, frid, newfrid));\n\n\t\t\tif (rgid)\n\t\t\t\taction.mergeWith(fromRGroupFragment(restruct, rgid, newfrid));\n\t\t}\n\t});\n\n\tif (frid !== -1) {\n\t\taction.mergeWith(fromRGroupFragment(restruct, 0, frid));\n\t\taction.addOp(new op.FragmentDelete(frid).perform(restruct));\n\t\taction.mergeWith(fromUpdateIfThen(restruct, 0, rgid, rgForRemove));\n\t}\n\n\tif (restruct.molecule.isChiral && restruct.molecule.frags.size === 0)\n\t\taction.addOp(new op.ChiralFlagDelete().perform(restruct));\n\n\treturn action;\n}\n\nexport function fromFragmentDeletion(restruct, selection) { // eslint-disable-line max-statements\n\tconsole.assert(!!selection);\n\tlet action = new Action();\n\tconst atomsToRemove = [];\n\tconst frids = [];\n\n\tselection = { // TODO: refactor me\n\t\tatoms: selection.atoms || [],\n\t\tbonds: selection.bonds || [],\n\t\trxnPluses: selection.rxnPluses || [],\n\t\trxnArrows: selection.rxnArrows || [],\n\t\tsgroupData: selection.sgroupData || [],\n\t\tchiralFlags: selection.chiralFlags || []\n\t};\n\n\tconst actionRemoveDataSGroups = new Action();\n\trestruct.molecule.sgroups.forEach((sg, id) => {\n\t\tif (\n\t\t\tselection.sgroupData.includes(id) ||\n\t\t\tnew Pile(selection.atoms).isSuperset(new Pile(sg.atoms))\n\t\t)\n\t\t\tactionRemoveDataSGroups.mergeWith(fromSgroupDeletion(restruct, id));\n\t});\n\n\tselection.atoms.forEach((aid) => {\n\t\tatomGetNeighbors(restruct, aid).forEach((nei) => {\n\t\t\tif (selection.bonds.indexOf(nei.bid) === -1)\n\t\t\t\tselection.bonds = selection.bonds.concat([nei.bid]);\n\t\t});\n\t});\n\n\tselection.bonds.forEach((bid) => {\n\t\taction.addOp(new op.BondDelete(bid));\n\n\t\tconst bond = restruct.molecule.bonds.get(bid);\n\t\tconst frid = restruct.molecule.atoms.get(bond.begin).fragment;\n\t\tif (frids.indexOf(frid) < 0)\n\t\t\tfrids.push(frid);\n\n\t\tif (selection.atoms.indexOf(bond.begin) === -1 && atomGetDegree(restruct, bond.begin) === 1) {\n\t\t\tif (removeAtomFromSgroupIfNeeded(action, restruct, bond.begin))\n\t\t\t\tatomsToRemove.push(bond.begin);\n\n\t\t\taction.addOp(new op.AtomDelete(bond.begin));\n\t\t}\n\t\tif (selection.atoms.indexOf(bond.end) === -1 && atomGetDegree(restruct, bond.end) === 1) {\n\t\t\tif (removeAtomFromSgroupIfNeeded(action, restruct, bond.end))\n\t\t\t\tatomsToRemove.push(bond.end);\n\n\t\t\taction.addOp(new op.AtomDelete(bond.end));\n\t\t}\n\t});\n\n\tselection.atoms.forEach((aid) => {\n\t\tconst frid3 = restruct.molecule.atoms.get(aid).fragment;\n\t\tif (frids.indexOf(frid3) < 0)\n\t\t\tfrids.push(frid3);\n\n\t\tif (removeAtomFromSgroupIfNeeded(action, restruct, aid))\n\t\t\tatomsToRemove.push(aid);\n\n\t\taction.addOp(new op.AtomDelete(aid));\n\t});\n\n\tremoveSgroupIfNeeded(action, restruct, atomsToRemove);\n\n\tselection.rxnArrows.forEach((id) => {\n\t\taction.addOp(new op.RxnArrowDelete(id));\n\t});\n\n\tselection.rxnPluses.forEach((id) => {\n\t\taction.addOp(new op.RxnPlusDelete(id));\n\t});\n\n\tselection.chiralFlags.forEach((id) => {\n\t\taction.addOp(new op.ChiralFlagDelete(id));\n\t});\n\n\taction = action.perform(restruct);\n\n\tconst rgForRemove = frids.map(frid =>\n\t\tRGroup.findRGroupByFragment(restruct.molecule.rgroups, frid));\n\twhile (frids.length > 0)\n\t\taction.mergeWith(fromFragmentSplit(restruct, frids.pop(), rgForRemove));\n\n\taction.mergeWith(actionRemoveDataSGroups);\n\n\treturn action;\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\n\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\nimport { fromChiralFlagAddition } from './chiral-flag';\nimport { fromRGroupAttrs, fromUpdateIfThen } from './rgroup';\nimport { fromSgroupAddition } from './sgroup';\n\nexport function fromPaste(restruct, pstruct, point, angle = 0) {\n\tconst xy0 = getStructCenter(pstruct);\n\tconst offset = Vec2.diff(point, xy0);\n\n\tconst action = new Action();\n\n\tconst aidMap = new Map();\n\tconst fridMap = new Map();\n\n\tconst pasteItems = { // only atoms and bonds now\n\t\tatoms: [],\n\t\tbonds: []\n\t};\n\n\tpstruct.atoms.forEach((atom, aid) => {\n\t\tif (!fridMap.has(atom.fragment))\n\t\t\tfridMap.set(atom.fragment, action.addOp(new op.FragmentAdd().perform(restruct)).frid);\n\n\t\tconst tmpAtom = Object.assign(atom.clone(), { fragment: fridMap.get(atom.fragment) });\n\t\tconst operation = new op.AtomAdd(tmpAtom, Vec2.diff(atom.pp, xy0).rotate(angle).add(point))\n\t\t\t.perform(restruct);\n\t\taction.addOp(operation);\n\t\taidMap.set(aid, operation.data.aid);\n\n\t\tpasteItems.atoms.push(operation.data.aid);\n\t});\n\n\tpstruct.bonds.forEach((bond) => {\n\t\tconst operation = new op.BondAdd(aidMap.get(bond.begin), aidMap.get(bond.end), bond)\n\t\t\t.perform(restruct);\n\t\taction.addOp(operation);\n\n\t\tpasteItems.bonds.push(operation.data.bid);\n\t});\n\n\tpstruct.sgroups.forEach((sg) => {\n\t\tconst newsgid = restruct.molecule.sgroups.newId();\n\t\tconst sgAtoms = sg.atoms.map(aid => aidMap.get(aid));\n\t\tconst sgAction = fromSgroupAddition(\n\t\t\trestruct, sg.type, sgAtoms, sg.data, newsgid, sg.pp ? sg.pp.add(offset) : null\n\t\t);\n\t\tsgAction.operations.reverse().forEach((oper) => {\n\t\t\taction.addOp(oper);\n\t\t});\n\t});\n\n\tif (restruct.rxnArrows.size < 1) {\n\t\tpstruct.rxnArrows\n\t\t\t.forEach((rxnArrow) => {\n\t\t\t\taction.addOp(new op.RxnArrowAdd(rxnArrow.pp.add(offset)).perform(restruct));\n\t\t\t});\n\t}\n\n\tpstruct.rxnPluses\n\t\t.forEach((plus) => {\n\t\t\taction.addOp(new op.RxnPlusAdd(plus.pp.add(offset)).perform(restruct));\n\t\t});\n\n\tif (pstruct.isChiral) {\n\t\tconst bb = pstruct.getCoordBoundingBox();\n\t\tconst pp = new Vec2(bb.max.x, bb.min.y - 1);\n\t\taction.mergeWith(fromChiralFlagAddition(restruct, pp.add(offset)));\n\t}\n\n\tpstruct.rgroups.forEach((rg, rgid) => {\n\t\trg.frags.forEach((frag, frid) => {\n\t\t\taction.addOp(new op.RGroupFragment(rgid, fridMap.get(frid)).perform(restruct));\n\t\t});\n\t\tconst ifThen = pstruct.rgroups.get(rgid).ifthen;\n\t\tconst newRgId = pstruct.rgroups.get(ifThen) ? ifThen : 0;\n\t\taction.mergeWith(fromRGroupAttrs(restruct, rgid, rg.getAttrs()))\n\t\t\t.mergeWith(fromUpdateIfThen(restruct, newRgId, rg.ifthen));\n\t});\n\n\taction.operations.reverse();\n\treturn [action, pasteItems];\n}\n\nfunction getStructCenter(struct) {\n\tif (struct.atoms.size > 0) {\n\t\tlet xmin = 1e50;\n\t\tlet ymin = xmin;\n\t\tlet xmax = -xmin;\n\t\tlet ymax = -ymin;\n\n\t\tstruct.atoms.forEach((atom) => {\n\t\t\txmin = Math.min(xmin, atom.pp.x);\n\t\t\tymin = Math.min(ymin, atom.pp.y);\n\t\t\txmax = Math.max(xmax, atom.pp.x);\n\t\t\tymax = Math.max(ymax, atom.pp.y);\n\t\t});\n\t\treturn new Vec2((xmin + xmax) / 2, (ymin + ymax) / 2); // TODO: check\n\t}\n\tif (struct.rxnArrows.size > 0) return struct.rxnArrows.get(0).pp;\n\tif (struct.rxnPluses.size > 0) return struct.rxnPluses.get(0).pp;\n\n\treturn struct.isChiral ? new Vec2(1, -1) : null;\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\nexport function fromArrowAddition(restruct, pos) {\n\tvar action = new Action();\n\tif (restruct.molecule.rxnArrows.size < 1)\n\t\taction.addOp(new op.RxnArrowAdd(pos).perform(restruct));\n\treturn action;\n}\n\nexport function fromArrowDeletion(restruct, id) {\n\tvar action = new Action();\n\taction.addOp(new op.RxnArrowDelete(id));\n\treturn action.perform(restruct);\n}\n\nexport function fromPlusAddition(restruct, pos) {\n\tvar action = new Action();\n\taction.addOp(new op.RxnPlusAdd(pos).perform(restruct));\n\treturn action;\n}\n\nexport function fromPlusDeletion(restruct, id) {\n\tvar action = new Action();\n\taction.addOp(new op.RxnPlusDelete(id));\n\treturn action.perform(restruct);\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport op from '../shared/op';\nimport Action from '../shared/action';\n\nexport function fromRGroupAttrs(restruct, id, attrs) {\n\tconst action = new Action();\n\n\tObject.keys(attrs).forEach((key) => {\n\t\taction.addOp(new op.RGroupAttr(id, key, attrs[key]));\n\t});\n\n\treturn action.perform(restruct);\n}\n\nexport function fromRGroupFragment(restruct, rgidNew, frid) {\n\tconst action = new Action();\n\taction.addOp(new op.RGroupFragment(rgidNew, frid));\n\n\treturn action.perform(restruct);\n}\n\nexport function fromUpdateIfThen(restruct, rgidNew, rgidOld, skipRgids) {\n\tconst action = new Action();\n\tif (!restruct.molecule.rgroups.get(rgidOld))\n\t\taction.addOp(new op.UpdateIfThen(rgidNew, rgidOld, skipRgids));\n\n\treturn action.perform(restruct);\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport Pile from '../../util/pile';\n\nimport { Bond } from '../../chem/struct';\n\nimport op from '../shared/op';\nimport utils from '../shared/utils';\nimport Action from '../shared/action';\n\nimport { structSelection, getRelSgroupsBySelection, getFragmentAtoms } from './utils';\n\nexport function fromFlip(restruct, selection, dir, center) { // eslint-disable-line max-statements\n\tconst struct = restruct.molecule;\n\n\tconst action = new Action();\n\n\tif (!selection)\n\t\tselection = structSelection(struct);\n\n\tif (!selection.atoms)\n\t\treturn action.perform(restruct);\n\n\tconst fids = selection.atoms.reduce((acc, aid) => {\n\t\tconst atom = struct.atoms.get(aid);\n\n\t\tif (!acc[atom.fragment])\n\t\t\tacc[atom.fragment] = [];\n\n\t\tacc[atom.fragment].push(aid);\n\t\treturn acc;\n\t}, {});\n\n\tconst isFragFound = Object.keys(fids).find((frag) => {\n\t\tfrag = parseInt(frag, 10);\n\t\treturn !struct.getFragmentIds(frag).equals(new Pile(fids[frag]));\n\t});\n\n\tif (isFragFound)\n\t\treturn action; // empty action\n\n\tObject.keys(fids).forEach((frag) => {\n\t\tconst fragment = new Pile(fids[frag]);\n\n\t\tconst bbox = struct.getCoordBoundingBox(fragment);\n\t\tconst calcCenter = center ||\n\t\t\tnew Vec2((bbox.max.x + bbox.min.x) / 2, (bbox.max.y + bbox.min.y) / 2);\n\n\t\tfragment.forEach((aid) => {\n\t\t\tconst atom = struct.atoms.get(aid);\n\t\t\tconst d = flipItemByCenter(atom, calcCenter, dir);\n\t\t\taction.addOp(new op.AtomMove(aid, d));\n\t\t});\n\n\t\tif (!selection.sgroupData) {\n\t\t\tconst sgroups = getRelSgroupsBySelection(restruct, Array.from(fragment));\n\n\t\t\tsgroups.forEach((sg) => {\n\t\t\t\tconst d = flipItemByCenter(sg, calcCenter, dir);\n\t\t\t\taction.addOp(new op.SGroupDataMove(sg.id, d));\n\t\t\t});\n\t\t}\n\t});\n\n\tif (selection.bonds) {\n\t\tselection.bonds.forEach((bid) => {\n\t\t\tconst bond = struct.bonds.get(bid);\n\n\t\t\tif (bond.type !== Bond.PATTERN.TYPE.SINGLE)\n\t\t\t\treturn;\n\n\t\t\tif (bond.stereo === Bond.PATTERN.STEREO.UP) {\n\t\t\t\taction.addOp(new op.BondAttr(bid, 'stereo', Bond.PATTERN.STEREO.DOWN));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (bond.stereo === Bond.PATTERN.STEREO.DOWN)\n\t\t\t\taction.addOp(new op.BondAttr(bid, 'stereo', Bond.PATTERN.STEREO.UP));\n\t\t});\n\t}\n\n\treturn action.perform(restruct);\n}\n\nfunction flipItemByCenter(item, center, dir) {\n\tconst d = new Vec2();\n\t/* eslint-disable no-mixed-operators*/\n\tif (dir === 'horizontal') {\n\t\td.x = (center.x > item.pp.x)\n\t\t\t? 2 * (center.x - item.pp.x)\n\t\t\t: -2 * (item.pp.x - center.x);\n\t} else { // 'vertical'\n\t\td.y = (center.y > item.pp.y)\n\t\t\t? 2 * (center.y - item.pp.y)\n\t\t\t: -2 * (item.pp.y - center.y);\n\t}\n\t/* eslint-enable no-mixed-operators*/\n\treturn d;\n}\n\nexport function fromRotate(restruct, selection, center, angle) { // eslint-disable-line\n\tconst struct = restruct.molecule;\n\n\tconst action = new Action();\n\n\tif (!selection)\n\t\tselection = structSelection(struct);\n\n\tif (selection.atoms) {\n\t\tselection.atoms.forEach((aid) => {\n\t\t\tconst atom = struct.atoms.get(aid);\n\t\t\taction.addOp(new op.AtomMove(aid, rotateDelta(atom.pp, center, angle)));\n\t\t});\n\n\t\tif (!selection.sgroupData) {\n\t\t\tconst sgroups = getRelSgroupsBySelection(restruct, selection.atoms);\n\n\t\t\tsgroups.forEach((sg) => {\n\t\t\t\taction.addOp(new op.SGroupDataMove(sg.id, rotateDelta(sg.pp, center, angle)));\n\t\t\t});\n\t\t}\n\t}\n\n\tif (selection.rxnArrows) {\n\t\tselection.rxnArrows.forEach((aid) => {\n\t\t\tvar arrow = struct.rxnArrows.get(aid);\n\t\t\taction.addOp(new op.RxnArrowMove(aid, rotateDelta(arrow.pp, center, angle)));\n\t\t});\n\t}\n\n\tif (selection.rxnPluses) {\n\t\tselection.rxnPluses.forEach((pid) => {\n\t\t\tvar plus = struct.rxnPluses.get(pid);\n\t\t\taction.addOp(new op.RxnPlusMove(pid, rotateDelta(plus.pp, center, angle)));\n\t\t});\n\t}\n\n\tif (selection.sgroupData) {\n\t\tselection.sgroupData.forEach((did) => {\n\t\t\tvar data = struct.sgroups.get(did);\n\t\t\taction.addOp(new op.SGroupDataMove(did, rotateDelta(data.pp, center, angle)));\n\t\t});\n\t}\n\n\tif (selection.chiralFlags) {\n\t\tselection.chiralFlags.forEach((fid) => {\n\t\t\tvar flag = restruct.chiralFlags.get(fid);\n\t\t\taction.addOp(new op.ChiralFlagMove(rotateDelta(flag.pp, center, angle)));\n\t\t});\n\t}\n\n\treturn action.perform(restruct);\n}\n\nexport function fromBondAlign(restruct, bid, dir) {\n\tconst struct = restruct.molecule;\n\tconst bond = struct.bonds.get(bid);\n\tconst begin = struct.atoms.get(bond.begin);\n\tconst end = struct.atoms.get(bond.end);\n\n\tconst center = begin.pp.add(end.pp).scaled(0.5);\n\tlet angle = utils.calcAngle(begin.pp, end.pp);\n\tconst atoms = getFragmentAtoms(struct, begin.fragment);\n\n\t// TODO: choose minimal angle\n\tangle = (dir === 'horizontal') ? -angle : ((Math.PI / 2) - angle);\n\n\tif (angle === 0 || Math.abs(angle) === Math.PI)\n\t\treturn fromFlip(restruct, { atoms }, dir, center);\n\n\treturn fromRotate(restruct, { atoms }, center, angle);\n}\n\nfunction rotateDelta(v, center, angle) {\n\tvar v1 = v.sub(center);\n\tv1 = v1.rotate(angle);\n\tv1.add_(center); // eslint-disable-line no-underscore-dangle\n\treturn v1.sub(v);\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { uniq } from 'lodash';\n\nimport { SGroup } from '../../chem/struct';\n\nimport Pile from '../../util/pile';\nimport op from '../shared/op';\nimport Action from '../shared/action';\nimport { SgContexts } from '../shared/constants';\n\nimport { atomGetAttr, atomGetDegree, atomGetSGroups } from './utils';\n\nexport function fromSeveralSgroupAddition(restruct, type, atoms, attrs) {\n\tconst descriptors = attrs.fieldValue;\n\n\tif (typeof descriptors === 'string' || type !== 'DAT')\n\t\treturn fromSgroupAddition(restruct, type, atoms, attrs, restruct.molecule.sgroups.newId());\n\n\treturn descriptors.reduce((acc, fValue) => {\n\t\tconst localAttrs = Object.assign({}, attrs);\n\t\tlocalAttrs.fieldValue = fValue;\n\n\t\treturn acc.mergeWith(\n\t\t\tfromSgroupAddition(restruct, type, atoms, localAttrs, restruct.molecule.sgroups.newId())\n\t\t);\n\t}, new Action());\n}\n\nexport function fromSgroupAttrs(restruct, id, attrs) {\n\tconst action = new Action();\n\n\tObject.keys(attrs).forEach((key) => {\n\t\taction.addOp(new op.SGroupAttr(id, key, attrs[key]));\n\t});\n\n\treturn action.perform(restruct);\n}\n\nexport function sGroupAttributeAction(id, attrs) {\n\tconst action = new Action();\n\n\tObject.keys(attrs).forEach((key) => {\n\t\taction.addOp(new op.SGroupAttr(id, key, attrs[key]));\n\t});\n\n\treturn action;\n}\n\nexport function fromSgroupDeletion(restruct, id) {\n\tlet action = new Action();\n\tconst struct = restruct.molecule;\n\n\tconst sG = restruct.sgroups.get(id).item;\n\n\tif (sG.type === 'SRU') {\n\t\tstruct.sGroupsRecalcCrossBonds();\n\n\t\tsG.neiAtoms.forEach((aid) => {\n\t\t\tif (atomGetAttr(restruct, aid, 'label') === '*')\n\t\t\t\taction.addOp(new op.AtomAttr(aid, 'label', 'C'));\n\t\t});\n\t}\n\n\tconst sg = struct.sgroups.get(id);\n\tconst atoms = SGroup.getAtoms(struct, sg);\n\tconst attrs = sg.getAttrs();\n\n\taction.addOp(new op.SGroupRemoveFromHierarchy(id));\n\n\tatoms.forEach((atom) => {\n\t\taction.addOp(new op.SGroupAtomRemove(id, atom));\n\t});\n\n\taction.addOp(new op.SGroupDelete(id));\n\n\taction = action.perform(restruct);\n\n\taction.mergeWith(sGroupAttributeAction(id, attrs));\n\n\treturn action;\n}\n\nexport function fromSgroupAddition(restruct, type, atoms, attrs, sgid, pp) { // eslint-disable-line\n\tlet action = new Action();\n\n\t// TODO: shoud the id be generated when OpSGroupCreate is executed?\n\t// if yes, how to pass it to the following operations?\n\tsgid = sgid - 0 === sgid ? sgid : restruct.molecule.sgroups.newId();\n\n\taction.addOp(new op.SGroupCreate(sgid, type, pp));\n\n\tatoms.forEach((atom) => {\n\t\taction.addOp(new op.SGroupAtomAdd(sgid, atom));\n\t});\n\n\taction.addOp(\n\t\ttype !== 'DAT' ?\n\t\t\tnew op.SGroupAddToHierarchy(sgid) :\n\t\t\tnew op.SGroupAddToHierarchy(sgid, -1, [])\n\t);\n\n\taction = action.perform(restruct);\n\n\tif (type === 'SRU') {\n\t\trestruct.molecule.sGroupsRecalcCrossBonds();\n\t\tlet asteriskAction = new Action();\n\n\t\trestruct.sgroups.get(sgid).item.neiAtoms.forEach((aid) => {\n\t\t\tconst plainCarbon = restruct.atoms.get(aid).a.isPlainCarbon();\n\n\t\t\tif (atomGetDegree(restruct, aid) === 1 && plainCarbon)\n\t\t\t\tasteriskAction.addOp(new op.AtomAttr(aid, 'label', '*'));\n\t\t});\n\n\t\tasteriskAction = asteriskAction.perform(restruct);\n\t\tasteriskAction.mergeWith(action);\n\t\taction = asteriskAction;\n\t}\n\n\treturn fromSgroupAttrs(restruct, sgid, attrs).mergeWith(action);\n}\n\nexport function fromSgroupAction(context, restruct, newSg, sourceAtoms, selection) {\n\tif (context === SgContexts.Bond)\n\t\treturn fromBondAction(restruct, newSg, sourceAtoms, selection);\n\n\tconst atomsFromBonds = getAtomsFromBonds(restruct.molecule, selection.bonds);\n\tconst newSourceAtoms = uniq(sourceAtoms.concat(atomsFromBonds));\n\n\tif (context === SgContexts.Fragment)\n\t\treturn fromGroupAction(restruct, newSg, newSourceAtoms, Array.from(restruct.atoms.keys()));\n\n\tif (context === SgContexts.Multifragment)\n\t\treturn fromMultiFragmentAction(restruct, newSg, newSourceAtoms);\n\n\tif (context === SgContexts.Group)\n\t\treturn fromGroupAction(restruct, newSg, newSourceAtoms, newSourceAtoms);\n\n\tif (context === SgContexts.Atom)\n\t\treturn fromAtomAction(restruct, newSg, newSourceAtoms);\n\n\treturn {\n\t\taction: fromSeveralSgroupAddition(restruct, newSg.type, sourceAtoms, newSg.attrs)\n\t};\n}\n\nfunction fromAtomAction(restruct, newSg, sourceAtoms) {\n\treturn sourceAtoms.reduce((acc, atom) => {\n\t\tacc.action = acc.action.mergeWith(\n\t\t\tfromSeveralSgroupAddition(restruct, newSg.type, [atom], newSg.attrs)\n\t\t);\n\t\treturn acc;\n\t}, {\n\t\taction: new Action(),\n\t\tselection: {\n\t\t\tatoms: sourceAtoms,\n\t\t\tbonds: []\n\t\t}\n\t});\n}\n\nfunction fromGroupAction(restruct, newSg, sourceAtoms, targetAtoms) {\n\tconst allFragments = new Pile(\n\t\tsourceAtoms.map(aid => restruct.atoms.get(aid).a.fragment)\n\t);\n\n\treturn Array.from(allFragments).reduce((acc, fragId) => {\n\t\tconst atoms = targetAtoms\n\t\t\t.reduce((res, aid) => {\n\t\t\t\tconst atom = restruct.atoms.get(aid).a;\n\t\t\t\tif (fragId === atom.fragment)\n\t\t\t\t\tres.push(aid);\n\n\t\t\t\treturn res;\n\t\t\t}, []);\n\n\t\tconst bonds = getAtomsBondIds(restruct.molecule, atoms);\n\n\t\tacc.action = acc.action.mergeWith(\n\t\t\tfromSeveralSgroupAddition(restruct, newSg.type, atoms, newSg.attrs)\n\t\t);\n\n\t\tacc.selection.atoms = acc.selection.atoms.concat(atoms);\n\t\tacc.selection.bonds = acc.selection.bonds.concat(bonds);\n\n\t\treturn acc;\n\t}, {\n\t\taction: new Action(),\n\t\tselection: {\n\t\t\tatoms: [],\n\t\t\tbonds: []\n\t\t}\n\t});\n}\n\nfunction fromBondAction(restruct, newSg, sourceAtoms, currSelection) {\n\tconst struct = restruct.molecule;\n\tlet bonds = getAtomsBondIds(struct, sourceAtoms);\n\n\tif (currSelection.bonds)\n\t\tbonds = uniq(bonds.concat(currSelection.bonds));\n\n\treturn bonds.reduce((acc, bondid) => {\n\t\tconst bond = struct.bonds.get(bondid);\n\n\t\tacc.action = acc.action\n\t\t\t.mergeWith(\n\t\t\t\tfromSeveralSgroupAddition(restruct, newSg.type, [bond.begin, bond.end], newSg.attrs)\n\t\t\t);\n\n\t\tacc.selection.bonds.push(bondid);\n\n\t\treturn acc;\n\t}, {\n\t\taction: new Action(),\n\t\tselection: {\n\t\t\tatoms: sourceAtoms,\n\t\t\tbonds: []\n\t\t}\n\t});\n}\n\nfunction fromMultiFragmentAction(restruct, newSg, atoms) {\n\tconst bonds = getAtomsBondIds(restruct.molecule, atoms);\n\treturn {\n\t\taction: fromSeveralSgroupAddition(restruct, newSg.type, atoms, newSg.attrs),\n\t\tselection: {\n\t\t\tatoms,\n\t\t\tbonds\n\t\t}\n\t};\n}\n\n// Add action operation to remove atom from s-group if needed\nexport function removeAtomFromSgroupIfNeeded(action, restruct, id) {\n\tconst sgroups = atomGetSGroups(restruct, id);\n\n\tif (sgroups.length > 0) {\n\t\tsgroups.forEach((sid) => {\n\t\t\taction.addOp(new op.SGroupAtomRemove(sid, id));\n\t\t});\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n// Add action operations to remove whole s-group if needed\nexport function removeSgroupIfNeeded(action, restruct, atoms) {\n\tconst struct = restruct.molecule;\n\tconst sgCounts = new Map();\n\n\tatoms.forEach((id) => {\n\t\tconst sgroups = atomGetSGroups(restruct, id);\n\n\t\tsgroups.forEach((sid) => {\n\t\t\tsgCounts.set(sid, sgCounts.has(sid) ? (sgCounts.get(sid) + 1) : 1);\n\t\t});\n\t});\n\n\tsgCounts.forEach((count, sid) => {\n\t\tconst sG = restruct.sgroups.get(sid).item;\n\t\tconst sgAtoms = SGroup.getAtoms(restruct.molecule, sG);\n\n\t\tif (sgAtoms.length === count) {\n\t\t\t// delete whole s-group\n\t\t\tconst sgroup = struct.sgroups.get(sid);\n\t\t\taction.mergeWith(sGroupAttributeAction(sid, sgroup.getAttrs()));\n\t\t\taction.addOp(new op.SGroupRemoveFromHierarchy(sid));\n\t\t\taction.addOp(new op.SGroupDelete(sid));\n\t\t}\n\t});\n}\n\nfunction getAtomsBondIds(struct, atoms) {\n\tconst atomSet = new Pile(atoms);\n\n\treturn Array.from(struct.bonds.keys()).filter((bid) => {\n\t\tconst bond = struct.bonds.get(bid);\n\t\treturn atomSet.has(bond.begin) && atomSet.has(bond.end);\n\t});\n}\n\nfunction getAtomsFromBonds(struct, bonds) {\n\tbonds = bonds || [];\n\treturn bonds.reduce((acc, bondid) => {\n\t\tconst bond = struct.bonds.get(bondid);\n\t\tacc = acc.concat([bond.begin, bond.end]);\n\t\treturn acc;\n\t}, []);\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport { Atom } from '../../chem/struct';\nimport op from '../shared/op';\nimport Action from '../shared/action';\nimport utils from '../shared/utils';\nimport closest from '../shared/closest';\n\nimport { atomGetAttr, atomForNewBond } from './utils';\nimport { fromAtomsAttrs, mergeSgroups } from './atom';\nimport { fromBondAddition, fromBondsAttrs } from './bond';\nimport { fromAromaticTemplateOnBond } from './aromatic-fusing';\nimport { fromPaste } from './paste';\n\nexport function fromTemplateOnCanvas(restruct, template, pos, angle) {\n\treturn fromPaste(restruct, template.molecule, pos, angle);\n}\n\nfunction extraBondAction(restruct, aid, angle) {\n\tlet action = new Action();\n\tconst frid = atomGetAttr(restruct, aid, 'fragment');\n\tlet additionalAtom = null;\n\n\tif (angle === null) {\n\t\tconst middleAtom = atomForNewBond(restruct, aid);\n\t\tconst actionRes = fromBondAddition(\n\t\t\trestruct, { type: 1 }, aid, middleAtom.atom, middleAtom.pos.get_xy0()\n\t\t);\n\t\taction = actionRes[0];\n\t\taction.operations.reverse();\n\t\tadditionalAtom = actionRes[2];\n\t} else {\n\t\tconst operation = new op.AtomAdd(\n\t\t\t{ label: 'C', fragment: frid },\n\t\t\t(new Vec2(1, 0)).rotate(angle).add(restruct.molecule.atoms.get(aid).pp).get_xy0()\n\t\t).perform(restruct);\n\n\t\taction.addOp(operation);\n\t\taction.addOp(\n\t\t\tnew op.BondAdd(aid, operation.data.aid, { type: 1 }).perform(restruct)\n\t\t);\n\n\t\tadditionalAtom = operation.data.aid;\n\t}\n\n\treturn { action, aid1: additionalAtom };\n}\n\nexport function fromTemplateOnAtom(restruct, template, aid, angle, extraBond) {\n\tlet action = new Action();\n\n\tconst tmpl = template.molecule;\n\tconst struct = restruct.molecule;\n\n\tlet atom = struct.atoms.get(aid); // aid - the atom that was clicked on\n\tlet aid1 = aid; // aid1 - the atom on the other end of the extra bond || aid\n\n\tlet delta = null;\n\n\tif (extraBond) {\n\t\t// create extra bond after click on atom\n\t\tconst extraRes = extraBondAction(restruct, aid, angle);\n\t\taction = extraRes.action;\n\t\taid1 = extraRes.aid1;\n\n\t\tatom = struct.atoms.get(aid1);\n\t\tdelta = utils.calcAngle(struct.atoms.get(aid).pp, atom.pp) - template.angle0;\n\t} else {\n\t\tif (angle === null)\n\t\t\tangle = utils.calcAngle(atom.pp, atomForNewBond(restruct, aid).pos);\n\t\tdelta = angle - template.angle0;\n\t}\n\n\tconst map = new Map();\n\tconst xy0 = tmpl.atoms.get(template.aid).pp;\n\tconst frid = atomGetAttr(restruct, aid, 'fragment');\n\n\t/* For merge */\n\tconst pasteItems = { // only atoms and bonds now\n\t\tatoms: [],\n\t\tbonds: []\n\t};\n\t/* ----- */\n\n\ttmpl.atoms.forEach((a, id) => {\n\t\tconst attrs = Atom.getAttrHash(a);\n\t\tattrs.fragment = frid;\n\n\t\tif (id === template.aid) {\n\t\t\taction.mergeWith(fromAtomsAttrs(restruct, aid1, attrs, true));\n\t\t\tmap.set(id, aid1);\n\t\t\tpasteItems.atoms.push(aid1);\n\t\t} else {\n\t\t\tconst v = Vec2.diff(a.pp, xy0).rotate(delta).add(atom.pp);\n\n\t\t\tconst operation = new op.AtomAdd(attrs, v.get_xy0()).perform(restruct);\n\t\t\taction.addOp(operation);\n\t\t\tmap.set(id, operation.data.aid);\n\t\t\tpasteItems.atoms.push(operation.data.aid);\n\t\t}\n\t});\n\tmergeSgroups(action, restruct, pasteItems.atoms, aid);\n\n\ttmpl.bonds.forEach((bond) => {\n\t\tconst operation = new op.BondAdd(map.get(bond.begin), map.get(bond.end), bond)\n\t\t\t.perform(restruct);\n\t\taction.addOp(operation);\n\n\t\tpasteItems.bonds.push(operation.data.bid);\n\t});\n\n\taction.operations.reverse();\n\treturn [action, pasteItems];\n}\n\nexport function fromTemplateOnBondAction(restruct, template, bid, events, flip, force) {\n\tif (!force)\n\t\treturn fromTemplateOnBond(restruct, template, bid, flip);\n\n\tconst simpleFusing = (restruct, template, bid) => fromTemplateOnBond(restruct, template, bid, flip); // eslint-disable-line\n\t/* aromatic merge (Promise)*/\n\treturn fromAromaticTemplateOnBond(restruct, template, bid, events, simpleFusing);\n}\n\nfunction fromTemplateOnBond(restruct, template, bid, flip) { // TODO: refactor function !!\n\tconst action = new Action();\n\n\tconst tmpl = template.molecule;\n\tconst struct = restruct.molecule;\n\n\tconst bond = struct.bonds.get(bid);\n\tconst tmplBond = tmpl.bonds.get(template.bid);\n\n\tconst tmplBegin = tmpl.atoms.get(flip ? tmplBond.end : tmplBond.begin);\n\n\tconst atomsMap = new Map([\n\t\t[tmplBond.begin, flip ? bond.end : bond.begin],\n\t\t[tmplBond.end, flip ? bond.begin : bond.end]\n\t]);\n\n\t// calc angle\n\tconst bondAtoms = {\n\t\tbegin: flip ? tmplBond.end : tmplBond.begin,\n\t\tend: flip ? tmplBond.begin : tmplBond.end\n\t};\n\tconst { angle, scale } = utils.mergeBondsParams(struct, bond, tmpl, bondAtoms);\n\n\tconst frid = struct.getBondFragment(bid);\n\n\t/* For merge */\n\tconst pasteItems = { // only atoms and bonds now\n\t\tatoms: [],\n\t\tbonds: []\n\t};\n\t/* ----- */\n\n\ttmpl.atoms.forEach((atom, id) => {\n\t\tconst attrs = Atom.getAttrHash(atom);\n\t\tattrs.fragment = frid;\n\t\tif (id === tmplBond.begin || id === tmplBond.end) {\n\t\t\taction.mergeWith(fromAtomsAttrs(restruct, atomsMap.get(id), attrs, true));\n\t\t\treturn;\n\t\t}\n\n\t\tconst v = Vec2.diff(atom.pp, tmplBegin.pp)\n\t\t\t.rotate(angle)\n\t\t\t.scaled(scale)\n\t\t\t.add(struct.atoms.get(bond.begin).pp);\n\t\tconst mergeA = closest.atom(restruct, v, null, 0.1);\n\n\t\tif (mergeA === null) {\n\t\t\tconst operation = new op.AtomAdd(attrs,\tv).perform(restruct);\n\t\t\taction.addOp(operation);\n\t\t\tatomsMap.set(id, operation.data.aid);\n\t\t\tpasteItems.atoms.push(operation.data.aid);\n\t\t} else {\n\t\t\tatomsMap.set(id, mergeA.id);\n\n\t\t\taction.mergeWith(fromAtomsAttrs(restruct, atomsMap.get(id), attrs, true));\n\t\t\t// TODO [RB] need to merge fragments?\n\t\t}\n\t});\n\tmergeSgroups(action, restruct, pasteItems.atoms, bond.begin);\n\n\ttmpl.bonds.forEach((tBond) => {\n\t\tconst existId = struct.findBondId(atomsMap.get(tBond.begin), atomsMap.get(tBond.end));\n\t\tif (existId === null) {\n\t\t\tconst operation = new op.BondAdd(atomsMap.get(tBond.begin), atomsMap.get(tBond.end), tBond)\n\t\t\t\t.perform(restruct);\n\t\t\taction.addOp(operation);\n\n\t\t\tpasteItems.bonds.push(operation.data.bid);\n\t\t} else {\n\t\t\taction.mergeWith(fromBondsAttrs(restruct, existId, tmplBond, true));\n\t\t}\n\t});\n\taction.operations.reverse();\n\treturn [action, pasteItems];\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { difference } from 'lodash';\nimport Vec2 from '../../util/vec2';\n\nimport closest from '../shared/closest';\n\nexport function atomGetAttr(restruct, aid, name) {\n\treturn restruct.molecule.atoms.get(aid)[name];\n}\n\nexport function atomGetDegree(restruct, aid) {\n\treturn restruct.atoms.get(aid).a.neighbors.length;\n}\n\nexport function atomGetNeighbors(restruct, aid) {\n\treturn restruct.atoms.get(aid).a.neighbors.map((nei) => {\n\t\tconst hb = restruct.molecule.halfBonds.get(nei);\n\t\treturn ({\n\t\t\taid: hb.end,\n\t\t\tbid: hb.bid\n\t\t});\n\t});\n}\n\nexport function atomGetSGroups(restruct, aid) {\n\treturn Array.from(restruct.atoms.get(aid).a.sgs);\n}\n\nexport function atomGetPos(restruct, id) {\n\treturn restruct.molecule.atoms.get(id).pp;\n}\n\nexport function structSelection(struct) {\n\treturn ['atoms', 'bonds', 'frags', 'sgroups', 'rgroups', 'rxnArrows', 'rxnPluses']\n\t\t.reduce((res, key) => {\n\t\t\tres[key] = Array.from(struct[key].keys());\n\t\t\treturn res;\n\t\t}, {});\n}\n\nexport function getFragmentAtoms(struct, frid) {\n\treturn Array.from(struct.atoms.keys())\n\t\t.filter(aid => struct.atoms.get(aid).fragment === frid);\n}\n\n// Get new atom id/label and pos for bond being added to existing atom\nexport function atomForNewBond(restruct, id) { // eslint-disable-line max-statements\n\tconst neighbours = [];\n\tconst pos = atomGetPos(restruct, id);\n\n\tatomGetNeighbors(restruct, id).forEach((nei) => {\n\t\tconst neiPos = atomGetPos(restruct, nei.aid);\n\n\t\tif (Vec2.dist(pos, neiPos) < 0.1)\n\t\t\treturn;\n\n\t\tneighbours.push({ id: nei.aid, v: Vec2.diff(neiPos, pos) });\n\t});\n\n\tneighbours.sort((nei1, nei2) => Math.atan2(nei1.v.y, nei1.v.x) - Math.atan2(nei2.v.y, nei2.v.x));\n\n\tvar i;\n\tvar maxI = 0;\n\tvar angle;\n\tvar maxAngle = 0;\n\n\t// TODO: impove layout: tree, ...\n\n\tfor (i = 0; i < neighbours.length; i++) {\n\t\tangle = Vec2.angle(neighbours[i].v, neighbours[(i + 1) % neighbours.length].v);\n\n\t\tif (angle < 0)\n\t\t\tangle += 2 * Math.PI;\n\n\t\tif (angle > maxAngle) {\n\t\t\tmaxI = i;\n\t\t\tmaxAngle = angle;\n\t\t}\n\t}\n\n\tlet v = new Vec2(1, 0);\n\n\tif (neighbours.length > 0) {\n\t\tif (neighbours.length === 1) {\n\t\t\tmaxAngle = -(4 * Math.PI / 3);\n\n\t\t\t// zig-zag\n\t\t\tconst nei = atomGetNeighbors(restruct, id)[0];\n\t\t\tif (atomGetDegree(restruct, nei.aid) > 1) {\n\t\t\t\tconst neiNeighbours = [];\n\t\t\t\tconst neiPos = atomGetPos(restruct, nei.aid);\n\t\t\t\tconst neiV = Vec2.diff(pos, neiPos);\n\t\t\t\tconst neiAngle = Math.atan2(neiV.y, neiV.x);\n\n\t\t\t\tatomGetNeighbors(restruct, nei.aid).forEach((neiNei) => {\n\t\t\t\t\tconst neiNeiPos = atomGetPos(restruct, neiNei.aid);\n\n\t\t\t\t\tif (neiNei.bid === nei.bid || Vec2.dist(neiPos, neiNeiPos) < 0.1)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tconst vDiff = Vec2.diff(neiNeiPos, neiPos);\n\t\t\t\t\tlet ang = Math.atan2(vDiff.y, vDiff.x) - neiAngle;\n\n\t\t\t\t\tif (ang < 0)\n\t\t\t\t\t\tang += 2 * Math.PI;\n\n\t\t\t\t\tneiNeighbours.push(ang);\n\t\t\t\t});\n\t\t\t\tneiNeighbours.sort((nei1, nei2) => nei1 - nei2);\n\n\t\t\t\tif (neiNeighbours[0] <= Math.PI * 1.01 &&\n\t\t\t\t\tneiNeighbours[neiNeighbours.length - 1] <= 1.01 * Math.PI)\n\t\t\t\t\tmaxAngle *= -1;\n\t\t\t}\n\t\t}\n\n\t\tangle = (maxAngle / 2) + Math.atan2(neighbours[maxI].v.y, neighbours[maxI].v.x);\n\n\t\tv = v.rotate(angle);\n\t}\n\n\tv.add_(pos); // eslint-disable-line no-underscore-dangle\n\n\tlet a = closest.atom(restruct, v, null, 0.1);\n\ta = a === null ? ({ label: 'C' }) : a.id;\n\n\treturn { atom: a, pos: v };\n}\n\nexport function getRelSgroupsBySelection(restruct, selectedAtoms) {\n\treturn restruct.molecule.sgroups\n\t\t.filter((sgid, sg) =>\n\t\t\t!sg.data.attached && !sg.data.absolute && difference(sg.atoms, selectedAtoms).length === 0);\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport s from 'subscription';\nimport Vec2 from '../util/vec2';\nimport Pile from '../util/pile';\n\nimport Struct from '../chem/struct';\nimport Render from '../render';\n\nimport { fromNewCanvas, fromDescriptorsAlign } from './actions/basic';\nimport closest from './shared/closest';\nimport toolMap from './tool';\n\nconst SCALE = 40;\nconst HISTORY_SIZE = 32; // put me to options\n\nconst structObjects = ['atoms', 'bonds', 'frags', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'chiralFlags'];\n\nfunction Editor(clientArea, options) {\n\tthis.render = new Render(clientArea, Object.assign({\n\t\tscale: SCALE\n\t}, options));\n\n\tthis._selection = null; // eslint-disable-line\n\tthis._tool = null; // eslint-disable-line\n\tthis.historyStack = [];\n\tthis.historyPtr = 0;\n\n\tthis.event = {\n\t\tmessage: new s.Subscription(),\n\t\telementEdit: new s.PipelineSubscription(),\n\t\tbondEdit: new s.PipelineSubscription(),\n\t\trgroupEdit: new s.PipelineSubscription(),\n\t\tsgroupEdit: new s.PipelineSubscription(),\n\t\tsdataEdit: new s.PipelineSubscription(),\n\t\tquickEdit: new s.PipelineSubscription(),\n\t\tattachEdit: new s.PipelineSubscription(),\n\t\tchange: new s.PipelineSubscription(),\n\t\tselectionChange: new s.PipelineSubscription(),\n\t\taromatizeStruct: new s.PipelineSubscription(),\n\t\tdearomatizeStruct: new s.PipelineSubscription()\n\t};\n\n\tdomEventSetup(this, clientArea);\n}\n\nEditor.prototype.tool = function (name, opts) {\n\t/* eslint-disable no-underscore-dangle */\n\tif (arguments.length > 0) {\n\t\tif (this._tool && this._tool.cancel)\n\t\t\tthis._tool.cancel();\n\t\tvar tool = toolMap[name](this, opts);\n\t\tif (!tool)\n\t\t\treturn null;\n\t\tthis._tool = tool;\n\t}\n\treturn this._tool;\n\t/* eslint-enable no-underscore-dangle */\n};\n\nEditor.prototype.struct = function (value) {\n\tif (arguments.length > 0) {\n\t\tthis.selection(null);\n\t\tthis.update(fromNewCanvas(this.render.ctab,\n\t\t\tvalue || new Struct()));\n\t\trecoordinate(this, getStructCenter(this.render.ctab));\n\t}\n\treturn this.render.ctab.molecule;\n};\n\nEditor.prototype.options = function (value) {\n\tif (arguments.length > 0) {\n\t\tvar struct = this.render.ctab.molecule;\n\t\tvar zoom = this.render.options.zoom;\n\t\tthis.render.clientArea.innerHTML = '';\n\t\tthis.render = new Render(this.render.clientArea, Object.assign({ scale: SCALE }, value));\n\t\tthis.render.setMolecule(struct); // TODO: reuse this.struct here?\n\t\tthis.render.setZoom(zoom);\n\t\tthis.render.update();\n\t}\n\treturn this.render.options;\n};\n\nEditor.prototype.zoom = function (value) {\n\tif (arguments.length > 0) {\n\t\tthis.render.setZoom(value);\n\t\trecoordinate(this, getStructCenter(this.render.ctab,\n\t\t\tthis.selection()));\n\t\tthis.render.update();\n\t}\n\treturn this.render.options.zoom;\n};\n\nEditor.prototype.selection = function (ci) {\n\tlet restruct = this.render.ctab;\n\tif (arguments.length > 0) {\n\t\tthis._selection = null; // eslint-disable-line\n\t\tif (ci === 'all') { // TODO: better way will be this.struct()\n\t\t\tci = structObjects.reduce((res, key) => {\n\t\t\t\tres[key] = Array.from(restruct[key].keys());\n\t\t\t\treturn res;\n\t\t\t}, {});\n\t\t}\n\n\t\tif (ci === 'descriptors') {\n\t\t\trestruct = this.render.ctab;\n\t\t\tci = { sgroupData: Array.from(restruct['sgroupData'].keys()) };\n\t\t}\n\n\t\tif (ci) {\n\t\t\tvar res = {};\n\t\t\tObject.keys(ci).forEach((key) => {\n\t\t\t\tif (ci[key].length > 0) // TODO: deep merge\n\t\t\t\t\tres[key] = ci[key].slice();\n\t\t\t});\n\t\t\tif (Object.keys(res).length !== 0)\n\t\t\t\tthis._selection = res; // eslint-disable-line\n\t\t}\n\n\t\tthis.render.ctab.setSelection(this._selection); // eslint-disable-line\n\t\tthis.event.selectionChange.dispatch(this._selection); // eslint-disable-line\n\n\t\tthis.render.update();\n\t}\n\treturn this._selection; // eslint-disable-line\n};\n\nEditor.prototype.hover = function (ci, newTool) {\n\tconst tool = newTool || this._tool; // eslint-disable-line\n\n\tif ('ci' in tool && (!ci || tool.ci.map !== ci.map || tool.ci.id !== ci.id)) {\n\t\tthis.highlight(tool.ci, false);\n\t\tdelete tool.ci;\n\t}\n\n\tif (ci && this.highlight(ci, true))\n\t\ttool.ci = ci;\n};\n\nconst highlightTargets = ['atoms', 'bonds', 'rxnArrows', 'rxnPluses',\n\t'chiralFlags', 'frags', 'merge', 'rgroups', 'sgroups', 'sgroupData'];\n\nEditor.prototype.highlight = function (ci, visible) {\n\tif (highlightTargets.indexOf(ci.map) === -1)\n\t\treturn false;\n\n\tvar rnd = this.render;\n\tvar item = null;\n\n\tif (ci.map === 'merge') {\n\t\tObject.keys(ci.items).forEach((mp) => {\n\t\t\tci.items[mp].forEach((dstId) => {\n\t\t\t\titem = rnd.ctab[mp].get(dstId);\n\n\t\t\t\tif (item)\n\t\t\t\t\titem.setHighlight(visible, rnd);\n\t\t\t});\n\t\t});\n\n\t\treturn true;\n\t}\n\titem = rnd.ctab[ci.map].get(ci.id);\n\tif (!item)\n\t\treturn true; // TODO: fix, attempt to highlight a deleted item\n\tif ((ci.map === 'sgroups' && item.item.type === 'DAT') || ci.map === 'sgroupData') {\n\t\t// set highlight for both the group and the data item\n\t\tvar item1 = rnd.ctab.sgroups.get(ci.id);\n\t\tvar item2 = rnd.ctab.sgroupData.get(ci.id);\n\t\tif (item1)\n\t\t\titem1.setHighlight(visible, rnd);\n\t\tif (item2)\n\t\t\titem2.setHighlight(visible, rnd);\n\t} else {\n\t\titem.setHighlight(visible, rnd);\n\t}\n\treturn true;\n};\n\nEditor.prototype.update = function (action, ignoreHistory) {\n\tif (action === true) {\n\t\tthis.render.update(true); // force\n\t} else {\n\t\tif (!ignoreHistory && !action.isDummy()) {\n\t\t\tthis.historyStack.splice(this.historyPtr, HISTORY_SIZE + 1, action);\n\t\t\tif (this.historyStack.length > HISTORY_SIZE)\n\t\t\t\tthis.historyStack.shift();\n\t\t\tthis.historyPtr = this.historyStack.length;\n\t\t\tthis.event.change.dispatch(action); // TODO: stoppable here\n\t\t}\n\t\tthis.render.update();\n\t}\n};\n\nEditor.prototype.historySize = function () {\n\treturn {\n\t\tundo: this.historyPtr,\n\t\tredo: this.historyStack.length - this.historyPtr\n\t};\n};\n\nEditor.prototype.undo = function () {\n\tif (this.historyPtr === 0)\n\t\tthrow new Error('Undo stack is empty');\n\tif (this.tool() && this.tool().cancel)\n\t\tthis.tool().cancel();\n\tthis.selection(null);\n\tif (this._tool instanceof toolMap['paste']) {\n\t\tthis.event.change.dispatch();\n\t\treturn;\n\t}\n\tthis.historyPtr--;\n\tconst action = this.historyStack[this.historyPtr].perform(this.render.ctab);\n\tthis.historyStack[this.historyPtr] = action;\n\tthis.event.change.dispatch(action);\n\tthis.render.update();\n};\n\nEditor.prototype.redo = function () {\n\tif (this.historyPtr === this.historyStack.length)\n\t\tthrow new Error('Redo stack is empty');\n\tif (this.tool() && this.tool().cancel)\n\t\tthis.tool().cancel();\n\tthis.selection(null);\n\tif (this._tool instanceof toolMap['paste']) {\n\t\tthis.event.change.dispatch();\n\t\treturn;\n\t}\n\tconst action = this.historyStack[this.historyPtr].perform(this.render.ctab);\n\tthis.historyStack[this.historyPtr] = action;\n\tthis.historyPtr++;\n\tthis.event.change.dispatch(action);\n\tthis.render.update();\n};\n\nEditor.prototype.on = function (eventName, handler) {\n\tthis.event[eventName].add(handler);\n};\n\nfunction isMouseRight(event) {\n\treturn (event.which && event.which === 3) ||\n\t\t(event.button && event.button === 2);\n}\n\nfunction domEventSetup(editor, clientArea) {\n\t// TODO: addEventListener('resize', ...);\n\t['click', 'dblclick', 'mousedown', 'mousemove',\n\t\t'mouseup', 'mouseleave'].forEach((eventName) => {\n\t\teditor.event[eventName] = new s.DOMSubscription();\n\t\tconst subs = editor.event[eventName];\n\t\tclientArea.addEventListener(eventName, subs.dispatch.bind(subs));\n\n\t\tsubs.add((event) => {\n\t\t\tif (eventName !== 'mouseup' && eventName !== 'mouseleave') { // to complete drag actions\n\t\t\t\tif (isMouseRight(event) ||\n\t\t\t\t\t!event.target || event.target.nodeName === 'DIV') { // click on scroll\n\t\t\t\t\teditor.hover(null);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst EditorTool = editor.tool();\n\t\t\teditor.lastEvent = event;\n\t\t\tif (EditorTool && eventName in EditorTool)\n\t\t\t\tEditorTool[eventName](event);\n\t\t\treturn true;\n\t\t}, -1);\n\t});\n}\n\nEditor.prototype.findItem = function (event, maps, skip) {\n\tconst pos = global._ui_editor ? new Vec2(this.render.page2obj(event)) : // eslint-disable-line\n\t\tnew Vec2(event.pageX, event.pageY).sub(elementOffset(this.render.clientArea));\n\n\treturn closest.item(this.render.ctab, pos, maps, skip, this.render.options);\n};\n\nEditor.prototype.findMerge = function (srcItems, maps) {\n\treturn closest.merge(this.render.ctab, srcItems, maps, this.render.options);\n};\n\nEditor.prototype.explicitSelected = function () {\n\tconst selection = this.selection() || {};\n\tconst res = structObjects.reduce((acc, key) => {\n\t\tacc[key] = selection[key] ? selection[key].slice() : [];\n\t\treturn acc;\n\t}, {});\n\n\tconst struct = this.render.ctab.molecule;\n\t// \"auto-select\" the atoms for the bonds in selection\n\tif (res.bonds) {\n\t\tres.bonds.forEach((bid) => {\n\t\t\tconst bond = struct.bonds.get(bid);\n\t\t\tres.atoms = res.atoms || [];\n\t\t\tif (res.atoms.indexOf(bond.begin) < 0)\n\t\t\t\tres.atoms.push(bond.begin);\n\n\t\t\tif (res.atoms.indexOf(bond.end) < 0)\n\t\t\t\tres.atoms.push(bond.end);\n\t\t});\n\t}\n\t// \"auto-select\" the bonds with both atoms selected\n\tif (res.atoms && res.bonds) {\n\t\tstruct.bonds.forEach((bond, bid) => {\n\t\t\tif (!res.bonds.indexOf(bid) < 0) {\n\t\t\t\tif (res.atoms.indexOf(bond.begin) >= 0 && res.atoms.indexOf(bond.end) >= 0) {\n\t\t\t\t\tres.bonds = res.bonds || [];\n\t\t\t\t\tres.bonds.push(bid);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\treturn res;\n};\n\nEditor.prototype.structSelected = function () {\n\tconst struct = this.render.ctab.molecule;\n\tconst selection = this.explicitSelected();\n\tconst dst = struct.clone(new Pile(selection.atoms), new Pile(selection.bonds), true);\n\n\t// Copy by its own as Struct.clone doesn't support\n\t// arrows/pluses id sets\n\tstruct.rxnArrows.forEach((item, id) => {\n\t\tif (selection.rxnArrows.indexOf(id) !== -1)\n\t\t\tdst.rxnArrows.add(item.clone());\n\t});\n\tstruct.rxnPluses.forEach((item, id) => {\n\t\tif (selection.rxnPluses.indexOf(id) !== -1)\n\t\t\tdst.rxnPluses.add(item.clone());\n\t});\n\tdst.isChiral = struct.isChiral;\n\n\t// TODO: should be reaction only if arrwos? check this logic\n\tdst.isReaction = struct.isReaction &&\n\t\t(dst.rxnArrows.size || dst.rxnPluses.size);\n\n\treturn dst;\n};\n\nEditor.prototype.alignDescriptors = function () {\n\tthis.selection(null);\n\tconst action = fromDescriptorsAlign(this.render.ctab);\n\tthis.update(action);\n\tthis.render.update(true);\n};\n\nfunction recoordinate(editor, rp/* , vp*/) {\n\t// rp is a point in scaled coordinates, which will be positioned\n\t// vp is the point where the reference point should now be (in view coordinates)\n\t// or the center if not set\n\tconsole.assert(rp, 'Reference point not specified');\n\teditor.render.setScrollOffset(0, 0);\n}\n\nfunction getStructCenter(restruct, selection) {\n\tvar bb = restruct.getVBoxObj(selection || {});\n\treturn Vec2.lc2(bb.p0, 0.5, bb.p1, 0.5);\n}\n\n// TODO: find DOM shorthand\nfunction elementOffset(element) {\n\tlet top = 0;\n\tlet left = 0;\n\tdo {\n\t\ttop += element.offsetTop || 0;\n\t\tleft += element.offsetLeft || 0;\n\t\telement = element.offsetParent;\n\t} while (element);\n\treturn new Vec2(left, top);\n}\n\nexport default Editor;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n//\n// Undo/redo actions\n//\nfunction Action() {\n\tthis.operations = [];\n}\n\nAction.prototype.addOp = function (operation, restruct) {\n\tif (!restruct || !operation.isDummy(restruct))\n\t\tthis.operations.push(operation);\n\n\treturn operation;\n};\n\nAction.prototype.mergeWith = function (action) {\n\tthis.operations = this.operations.concat(action.operations);\n\treturn this;\n};\n\n// Perform action and return inverted one\nAction.prototype.perform = function (restruct) {\n\tconst action = new Action();\n\n\tthis.operations.forEach((operation) => {\n\t\taction.addOp(operation.perform(restruct));\n\t});\n\n\taction.operations.reverse();\n\treturn action;\n};\n\nAction.prototype.isDummy = function (restruct) {\n\treturn this.operations.find(\n\t\t// TODO [RB] the condition is always true for op.* operations\n\t\toperation => (restruct ? !operation.isDummy(restruct) : true)\n\t) === undefined;\n};\n\nexport default Action;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\n\nconst SELECTION_DISTANCE_COEFFICIENT = 0.4;\n\nconst findMaps = {\n\tatoms: findClosestAtom,\n\tbonds: findClosestBond,\n\tchiralFlags: findClosestChiralFlag,\n\tsgroupData: findClosestDataSGroupData,\n\tsgroups: findClosestSGroup,\n\trxnArrows: findClosestRxnArrow,\n\trxnPluses: findClosestRxnPlus,\n\tfrags: findClosestFrag,\n\trgroups: findClosestRGroup\n};\n\nfunction findClosestAtom(restruct, pos, skip, minDist) {\n\tlet closestAtom = null;\n\tconst maxMinDist = SELECTION_DISTANCE_COEFFICIENT;\n\tconst skipId = skip && skip.map === 'atoms' ? skip.id : null;\n\n\tminDist = minDist || maxMinDist;\n\tminDist = Math.min(minDist, maxMinDist);\n\n\trestruct.atoms.forEach((atom, aid) => {\n\t\tif (aid === skipId)\n\t\t\treturn;\n\n\t\tconst dist = Vec2.dist(pos, atom.a.pp);\n\n\t\tif (dist < minDist) {\n\t\t\tclosestAtom = aid;\n\t\t\tminDist = dist;\n\t\t}\n\t});\n\n\tif (closestAtom !== null) {\n\t\treturn {\n\t\t\tid: closestAtom,\n\t\t\tdist: minDist\n\t\t};\n\t}\n\n\treturn null;\n}\n\nfunction findClosestBond(restruct, pos, skip, minDist, scale) { // eslint-disable-line max-params\n\tlet closestBond = null;\n\tlet closestBondCenter = null;\n\tconst maxMinDist = 0.8 * SELECTION_DISTANCE_COEFFICIENT;\n\tconst skipId = skip && skip.map === 'bonds' ? skip.id : null;\n\n\tminDist = minDist || maxMinDist;\n\tminDist = Math.min(minDist, maxMinDist);\n\n\tlet minCDist = minDist;\n\n\trestruct.bonds.forEach((bond, bid) => {\n\t\tif (bid === skipId)\n\t\t\treturn;\n\n\t\tconst p1 = restruct.atoms.get(bond.b.begin).a.pp;\n\t\tconst p2 = restruct.atoms.get(bond.b.end).a.pp;\n\n\t\tconst mid = Vec2.lc2(p1, 0.5, p2, 0.5);\n\t\tconst cdist = Vec2.dist(pos, mid);\n\n\t\tif (cdist < minCDist) {\n\t\t\tminCDist = cdist;\n\t\t\tclosestBondCenter = bid;\n\t\t}\n\t});\n\n\trestruct.bonds.forEach((bond, bid) => {\n\t\tif (bid === skipId)\n\t\t\treturn;\n\n\t\tconst hb = restruct.molecule.halfBonds.get(bond.b.hb1);\n\t\tconst dir = hb.dir;\n\t\tconst norm = hb.norm;\n\n\t\tconst p1 = restruct.atoms.get(bond.b.begin).a.pp;\n\t\tconst p2 = restruct.atoms.get(bond.b.end).a.pp;\n\n\t\tconst inStripe = Vec2.dot(pos.sub(p1), dir) * Vec2.dot(pos.sub(p2), dir) < 0;\n\n\t\tif (inStripe) {\n\t\t\tconst dist = Math.abs(Vec2.dot(pos.sub(p1), norm));\n\n\t\t\tif (dist < minDist) {\n\t\t\t\tclosestBond = bid;\n\t\t\t\tminDist = dist;\n\t\t\t}\n\t\t}\n\t});\n\n\tif (closestBondCenter !== null) {\n\t\treturn {\n\t\t\tid: closestBondCenter,\n\t\t\tdist: minCDist\n\t\t};\n\t}\n\n\tif (closestBond !== null && minDist > SELECTION_DISTANCE_COEFFICIENT * scale) {\n\t\treturn {\n\t\t\tid: closestBond,\n\t\t\tdist: minDist\n\t\t};\n\t}\n\n\treturn null;\n}\n\nfunction findClosestChiralFlag(restruct, pos) {\n\tvar minDist;\n\tvar ret = null;\n\n\t// there is only one chiral flag, but we treat it as a \"map\" for convenience\n\trestruct.chiralFlags.forEach((item, id) => {\n\t\tconst p = item.pp;\n\n\t\tif (Math.abs(pos.x - p.x) >= 1.0)\n\t\t\treturn;\n\n\t\tconst dist = Math.abs(pos.y - p.y);\n\n\t\tif (dist < 0.3 && (!ret || dist < minDist)) {\n\t\t\tminDist = dist;\n\t\t\tret = { id, dist: minDist };\n\t\t}\n\t});\n\n\treturn ret;\n}\n\nfunction findClosestDataSGroupData(restruct, pos) {\n\tlet minDist = null;\n\tlet ret = null;\n\n\trestruct.sgroupData.forEach((item, id) => {\n\t\tif (item.sgroup.type !== 'DAT')\n\t\t\tthrow new Error('Data group expected');\n\n\t\tif (item.sgroup.data.fieldName !== 'MRV_IMPLICIT_H') {\n\t\t\tconst box = item.sgroup.dataArea;\n\t\t\tconst inBox = box.p0.y < pos.y && box.p1.y > pos.y && box.p0.x < pos.x && box.p1.x > pos.x;\n\t\t\tconst xDist = Math.min(Math.abs(box.p0.x - pos.x), Math.abs(box.p1.x - pos.x));\n\n\t\t\tif (inBox && (ret === null || xDist < minDist)) {\n\t\t\t\tret = { id, dist: xDist };\n\t\t\t\tminDist = xDist;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn ret;\n}\n\nfunction findClosestFrag(restruct, pos, skip, minDist, scale) {\n\tminDist = Math.min(minDist || SELECTION_DISTANCE_COEFFICIENT,\n\t\tSELECTION_DISTANCE_COEFFICIENT);\n\n\tconst struct = restruct.molecule;\n\n\tconst closestAtom = findClosestAtom(restruct, pos, skip, minDist);\n\n\tif (closestAtom) {\n\t\treturn {\n\t\t\tid: struct.atoms.get(closestAtom.id).fragment,\n\t\t\tdist: closestAtom.dist\n\t\t};\n\t}\n\n\tconst closestBond = findClosestBond(restruct, pos, skip, minDist, scale);\n\n\tif (closestBond) {\n\t\tconst atomId = struct.bonds.get(closestBond.id).begin;\n\t\treturn {\n\t\t\tid: struct.atoms.get(atomId).fragment,\n\t\t\tdist: closestBond.dist\n\t\t};\n\t}\n\n\treturn null;\n}\n\nfunction findClosestRGroup(restruct, pos, skip, minDist) {\n\tminDist = Math.min(minDist || SELECTION_DISTANCE_COEFFICIENT,\n\t\tSELECTION_DISTANCE_COEFFICIENT);\n\n\tlet ret = null;\n\n\trestruct.rgroups.forEach((rgroup, rgid) => {\n\t\tif (rgid !== skip && rgroup.labelBox && rgroup.labelBox.contains(pos, 0.5)) {\n\t\t\tconst dist = Vec2.dist(rgroup.labelBox.centre(), pos);\n\n\t\t\tif (!ret || dist < minDist) {\n\t\t\t\tminDist = dist;\n\t\t\t\tret = { id: rgid, dist: minDist };\n\t\t\t}\n\t\t}\n\t});\n\n\treturn ret;\n}\n\nfunction findClosestRxnArrow(restruct, pos) {\n\tlet minDist = null;\n\tlet ret = null;\n\n\trestruct.rxnArrows.forEach((arrow, id) => {\n\t\tconst p = arrow.item.pp;\n\n\t\tif (Math.abs(pos.x - p.x) >= 1.0)\n\t\t\treturn;\n\n\t\tconst dist = Math.abs(pos.y - p.y);\n\n\t\tif (dist < 0.3 && (!ret || dist < minDist)) {\n\t\t\tminDist = dist;\n\t\t\tret = { id, dist: minDist };\n\t\t}\n\t});\n\n\treturn ret;\n}\n\nfunction findClosestRxnPlus(restruct, pos) {\n\tlet minDist = null;\n\tlet ret = null;\n\n\trestruct.rxnPluses.forEach((plus, id) => {\n\t\tconst p = plus.item.pp;\n\t\tconst dist = Math.max(Math.abs(pos.x - p.x), Math.abs(pos.y - p.y));\n\n\t\tif (dist < 0.3 && (!ret || dist < minDist)) {\n\t\t\tminDist = dist;\n\t\t\tret = { id, dist: minDist };\n\t\t}\n\t});\n\n\treturn ret;\n}\n\nfunction findClosestSGroup(restruct, pos) {\n\tlet ret = null;\n\tlet minDist = SELECTION_DISTANCE_COEFFICIENT;\n\n\trestruct.molecule.sgroups.forEach((sg, sgid) => {\n\t\tconst d = sg.bracketDir;\n\t\tconst n = d.rotateSC(1, 0);\n\t\tconst pg = new Vec2(Vec2.dot(pos, d), Vec2.dot(pos, n));\n\n\t\tsg.areas.forEach((box) => {\n\t\t\tconst inBox = box.p0.y < pg.y && box.p1.y > pg.y && box.p0.x < pg.x && box.p1.x > pg.x;\n\t\t\tconst xDist = Math.min(Math.abs(box.p0.x - pg.x), Math.abs(box.p1.x - pg.x));\n\n\t\t\tif (inBox && (ret === null || xDist < minDist)) {\n\t\t\t\tret = sgid;\n\t\t\t\tminDist = xDist;\n\t\t\t}\n\t\t});\n\t});\n\n\tif (ret !== null) {\n\t\treturn {\n\t\t\tid: ret,\n\t\t\tdist: minDist\n\t\t};\n\t}\n\n\treturn null;\n}\n\nfunction findClosestItem(restruct, pos, maps, skip, scale) { // eslint-disable-line max-params\n\tmaps = maps || Object.keys(findMaps);\n\n\treturn maps.reduce((res, mp) => {\n\t\tconst minDist = res ? res.dist : null;\n\t\tconst item = findMaps[mp](restruct, pos, skip, minDist, scale);\n\n\t\tif (item !== null && (res === null || item.dist < res.dist)) {\n\t\t\treturn {\n\t\t\t\tmap: mp,\n\t\t\t\tid: item.id,\n\t\t\t\tdist: item.dist\n\t\t\t};\n\t\t}\n\n\t\treturn res;\n\t}, null);\n}\n\n/**\n * @param restruct { ReStruct }\n * @param selected { object }\n * @param maps { Array }\n * @param scale { number }\n * @return {{\n * \t\tatoms: Map?\n * \t\tbonds: Map?\n * }}\n */\nfunction findCloseMerge(restruct, selected, maps = ['atoms', 'bonds'], scale) {\n\tconst pos = {\n\t\tatoms: new Map(), // aid -> position\n\t\tbonds: new Map() // bid -> position\n\t};\n\n\tconst struct = restruct.molecule;\n\n\tselected.atoms.forEach((aid) => {\n\t\tpos.atoms.set(aid, struct.atoms.get(aid).pp);\n\t});\n\n\tselected.bonds.forEach((bid) => {\n\t\tconst bond = struct.bonds.get(bid);\n\t\tpos.bonds.set(\n\t\t\tbid,\n\t\t\tVec2.lc2(struct.atoms.get(bond.begin).pp, 0.5, struct.atoms.get(bond.end).pp, 0.5)\n\t\t);\n\t});\n\n\tconst result = {};\n\tmaps.forEach((mp) => {\n\t\tresult[mp] = Array.from(pos[mp].keys()).reduce((res, srcId) => {\n\t\t\tconst skip = { map: mp, id: srcId };\n\t\t\tconst item = findMaps[mp](restruct, pos[mp].get(srcId), skip, null, scale);\n\n\t\t\tif (item && !selected[mp].includes(item.id))\n\t\t\t\tres.set(srcId, item.id);\n\n\t\t\treturn res;\n\t\t}, new Map());\n\t});\n\n\treturn result;\n}\n\nexport default {\n\tatom: findClosestAtom, // used in Actions\n\titem: findClosestItem,\n\tmerge: findCloseMerge\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport const SgContexts = {\n\tFragment: 'Fragment',\n\tMultifragment: 'Multifragment',\n\tBond: 'Bond',\n\tAtom: 'Atom',\n\tGroup: 'Group'\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n/* eslint-disable no-shadow */\n\nimport Vec2 from '../../util/vec2';\nimport scale from '../../util/scale';\nimport Pile from '../../util/pile';\nimport { Atom, Bond, RGroup, RxnArrow, RxnPlus, SGroup } from '../../chem/struct';\nimport { ReAtom, ReBond, ReRxnPlus, ReRxnArrow, ReFrag, ReRGroup, ReChiralFlag, ReSGroup } from '../../render/restruct';\n\nvar DEBUG = { debug: false, logcnt: 0, logmouse: false, hl: false };\nDEBUG.logMethod = function () { };\n\nfunction Base() {\n\tthis.type = 'OpBase';\n\n\t// assert here?\n\tthis.execute = function () {\n\t\tthrow new Error('Operation.execute() is not implemented');\n\t};\n\n\tthis.invert = function () {\n\t\tthrow new Error('Operation.invert() is not implemented');\n\t};\n\n\tthis.perform = function (restruct) {\n\t\tthis.execute(restruct);\n\t\t/* eslint-disable no-underscore-dangle */\n\t\tif (!this._inverted) {\n\t\t\tthis._inverted = this.invert();\n\t\t\tthis._inverted._inverted = this;\n\t\t}\n\t\treturn this._inverted;\n\t};\n\n\tthis.isDummy = function (restruct) {\n\t\treturn this._isDummy ? this._isDummy(restruct) : false;\n\t\t/* eslint-enable no-underscore-dangle */\n\t};\n}\n\nfunction AtomAdd(atom, pos) {\n\tthis.data = { atom, pos, aid: null };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\n\t\tconst pp = {};\n\t\tif (this.data.atom)\n\t\t\tObject.keys(this.data.atom).forEach((p) => { pp[p] = this.data.atom[p]; });\n\n\t\tpp.label = pp.label || 'C';\n\n\t\tif (!(typeof this.data.aid === 'number'))\n\t\t\tthis.data.aid = struct.atoms.add(new Atom(pp));\n\t\telse\n\t\t\tstruct.atoms.set(this.data.aid, new Atom(pp));\n\n\t\t// notifyAtomAdded\n\t\tconst atomData = new ReAtom(struct.atoms.get(this.data.aid));\n\n\t\tatomData.component = restruct.connectedComponents.add(new Pile([this.data.aid]));\n\t\trestruct.atoms.set(this.data.aid, atomData);\n\t\trestruct.markAtom(this.data.aid, 1);\n\n\t\tstruct.atomSetPos(this.data.aid, new Vec2(this.data.pos));\n\n\t\tconst arrow = struct.rxnArrows.get(0);\n\t\tif (arrow) {\n\t\t\tconst atom = struct.atoms.get(this.data.aid);\n\t\t\tatom.rxnFragmentType = struct.defineRxnFragmentTypeForAtomset(new Pile([this.data.aid]), arrow.pp.x); // eslint-disable-line\n\t\t}\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new AtomDelete();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nAtomAdd.prototype = new Base();\n\nfunction AtomDelete(aid) {\n\tthis.data = { aid, atom: null, pos: null };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tif (!this.data.atom) {\n\t\t\tthis.data.atom = struct.atoms.get(this.data.aid);\n\t\t\tthis.data.pos = this.data.atom.pp;\n\t\t}\n\n\t\t// notifyAtomRemoved(this.data.aid);\n\t\tconst atom = restruct.atoms.get(this.data.aid);\n\t\tconst set = restruct.connectedComponents.get(atom.component);\n\t\tset.delete(this.data.aid);\n\t\tif (set.size === 0)\n\t\t\trestruct.connectedComponents.delete(atom.component);\n\t\trestruct.clearVisel(atom.visel);\n\t\trestruct.atoms.delete(this.data.aid);\n\t\trestruct.markItemRemoved();\n\n\t\tstruct.atoms.delete(this.data.aid);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new AtomAdd();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nAtomDelete.prototype = new Base();\n\nfunction AtomAttr(aid, attribute, value) {\n\tthis.data = { aid, attribute, value };\n\tthis.data2 = null;\n\n\tthis.execute = function (restruct) {\n\t\tconst atom = restruct.molecule.atoms.get(this.data.aid);\n\t\tif (!this.data2) {\n\t\t\tthis.data2 = {\n\t\t\t\taid: this.data.aid,\n\t\t\t\tattribute: this.data.attribute,\n\t\t\t\tvalue: atom[this.data.attribute]\n\t\t\t};\n\t\t}\n\n\t\tatom[this.data.attribute] = this.data.value;\n\t\tinvalidateAtom(restruct, this.data.aid);\n\t};\n\n\tthis._isDummy = function (restruct) { // eslint-disable-line no-underscore-dangle\n\t\treturn restruct.molecule.atoms.get(this.data.aid)[this.data.attribute] === this.data.value;\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new AtomAttr();\n\t\tret.data = this.data2;\n\t\tret.data2 = this.data;\n\t\treturn ret;\n\t};\n}\nAtomAttr.prototype = new Base();\n\nfunction AtomMove(aid, d, noinvalidate) {\n\tthis.data = { aid, d, noinvalidate };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst aid = this.data.aid;\n\t\tconst d = this.data.d;\n\t\tstruct.atoms.get(aid).pp.add_(d); // eslint-disable-line no-underscore-dangle\n\t\trestruct.atoms.get(aid).visel.translate(scale.obj2scaled(d, restruct.render.options));\n\n\t\tthis.data.d = d.negated();\n\n\t\tif (!this.data.noinvalidate)\n\t\t\tinvalidateAtom(restruct, aid, 1);\n\t};\n\n\tthis._isDummy = function () {\n\t\treturn this.data.d.x === 0 && this.data.d.y === 0;\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new AtomMove();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nAtomMove.prototype = new Base();\n\nfunction BondMove(bid, d) {\n\tthis.data = { bid, d };\n\n\tthis.execute = function (restruct) {\n\t\trestruct.bonds.get(this.data.bid).visel\n\t\t\t.translate(scale.obj2scaled(this.data.d, restruct.render.options));\n\t\tthis.data.d = this.data.d.negated();\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new BondMove();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nBondMove.prototype = new Base();\n\nfunction LoopMove(id, d) {\n\tthis.data = { id, d };\n\n\tthis.execute = function (restruct) {\n\t\t// not sure if there should be an action to move a loop in the first place\n\t\t// but we have to somehow move the aromatic ring,\n\t\t// which is associated with the loop, rather than with any of the bonds\n\t\tif (restruct.reloops.get(this.data.id) && restruct.reloops.get(this.data.id).visel) {\n\t\t\trestruct.reloops.get(this.data.id).visel\n\t\t\t\t.translate(scale.obj2scaled(this.data.d, restruct.render.options));\n\t\t}\n\t\tthis.data.d = this.data.d.negated();\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new LoopMove();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nLoopMove.prototype = new Base();\n\nfunction SGroupAtomAdd(sgid, aid) {\n\tthis.type = 'OpSGroupAtomAdd';\n\tthis.data = { sgid, aid };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst aid = this.data.aid;\n\t\tconst sgid = this.data.sgid;\n\t\tconst atom = struct.atoms.get(aid);\n\t\tconst sg = struct.sgroups.get(sgid);\n\n\t\tif (sg.atoms.indexOf(aid) >= 0)\n\t\t\tthrow new Error('The same atom cannot be added to an S-group more than once');\n\n\t\tif (!atom)\n\t\t\tthrow new Error('OpSGroupAtomAdd: Atom ' + aid + ' not found');\n\n\t\tstruct.atomAddToSGroup(sgid, aid);\n\t\tinvalidateAtom(restruct, aid);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new SGroupAtomRemove();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nSGroupAtomAdd.prototype = new Base();\n\nfunction SGroupAtomRemove(sgid, aid) {\n\tthis.type = 'OpSGroupAtomRemove';\n\tthis.data = { sgid, aid };\n\n\tthis.execute = function (restruct) {\n\t\tconst aid = this.data.aid;\n\t\tconst sgid = this.data.sgid;\n\t\tconst struct = restruct.molecule;\n\t\tconst atom = struct.atoms.get(aid);\n\t\tconst sg = struct.sgroups.get(sgid);\n\n\t\tSGroup.removeAtom(sg, aid);\n\t\tatom.sgs.delete(sgid);\n\t\tinvalidateAtom(restruct, aid);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new SGroupAtomAdd();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nSGroupAtomRemove.prototype = new Base();\n\nfunction SGroupAttr(sgid, attr, value) {\n\tthis.type = 'OpSGroupAttr';\n\tthis.data = { sgid, attr, value };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst sgid = this.data.sgid;\n\t\tconst sg = struct.sgroups.get(sgid);\n\n\t\tif (sg.type === 'DAT' && restruct.sgroupData.has(sgid)) {\n\t\t\t// clean the stuff here, else it might be left behind if the sgroups is set to \"attached\"\n\t\t\trestruct.clearVisel(restruct.sgroupData.get(sgid).visel);\n\t\t\trestruct.sgroupData.delete(sgid);\n\t\t}\n\n\t\tthis.data.value = sg.setAttr(this.data.attr, this.data.value);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new SGroupAttr();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nSGroupAttr.prototype = new Base();\n\nfunction SGroupCreate(sgid, type, pp) {\n\tthis.type = 'OpSGroupCreate';\n\tthis.data = { sgid, type, pp };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst sg = new SGroup(this.data.type);\n\t\tconst sgid = this.data.sgid;\n\n\t\tsg.id = sgid;\n\t\tstruct.sgroups.set(sgid, sg);\n\n\t\tif (this.data.pp)\n\t\t\tstruct.sgroups.get(sgid).pp = new Vec2(this.data.pp);\n\n\t\trestruct.sgroups.set(sgid, new ReSGroup(struct.sgroups.get(sgid)));\n\t\tthis.data.sgid = sgid;\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new SGroupDelete();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nSGroupCreate.prototype = new Base();\n\nfunction SGroupDelete(sgid) {\n\tthis.type = 'OpSGroupDelete';\n\tthis.data = { sgid };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst sgid = this.data.sgid;\n\t\tconst sg = restruct.sgroups.get(sgid);\n\n\t\tthis.data.type = sg.item.type;\n\t\tthis.data.pp = sg.item.pp;\n\n\t\tif (sg.item.type === 'DAT' && restruct.sgroupData.has(sgid)) {\n\t\t\trestruct.clearVisel(restruct.sgroupData.get(sgid).visel);\n\t\t\trestruct.sgroupData.delete(sgid);\n\t\t}\n\n\t\trestruct.clearVisel(sg.visel);\n\t\tif (sg.item.atoms.length !== 0)\n\t\t\tthrow new Error('S-Group not empty!');\n\n\t\trestruct.sgroups.delete(sgid);\n\t\tstruct.sgroups.delete(sgid);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new SGroupCreate();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nSGroupDelete.prototype = new Base();\n\nfunction SGroupAddToHierarchy(sgid, parent, children) {\n\tthis.type = 'OpSGroupAddToHierarchy';\n\tthis.data = { sgid, parent, children };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst sgid = this.data.sgid;\n\t\tconst relations = struct.sGroupForest.insert(sgid, parent, children);\n\n\t\tthis.data.parent = relations.parent;\n\t\tthis.data.children = relations.children;\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new SGroupRemoveFromHierarchy();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nSGroupAddToHierarchy.prototype = new Base();\n\nfunction SGroupRemoveFromHierarchy(sgid) {\n\tthis.type = 'OpSGroupRemoveFromHierarchy';\n\tthis.data = { sgid };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst sgid = this.data.sgid;\n\n\t\tthis.data.parent = struct.sGroupForest.parent.get(sgid);\n\t\tthis.data.children = struct.sGroupForest.children.get(sgid);\n\t\tstruct.sGroupForest.remove(sgid);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new SGroupAddToHierarchy();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nSGroupRemoveFromHierarchy.prototype = new Base();\n\nfunction BondAdd(begin, end, bond) {\n\tthis.data = { bond, begin, end, bid: null };\n\n\tthis.execute = function (restruct) { // eslint-disable-line max-statements\n\t\tconst struct = restruct.molecule;\n\n\t\tif (this.data.begin === this.data.end)\n\t\t\tthrow new Error('Distinct atoms expected');\n\n\t\tif (DEBUG.debug && this.molecule.checkBondExists(this.data.begin, this.data.end))\n\t\t\tthrow new Error('Bond already exists');\n\n\t\tinvalidateAtom(restruct, this.data.begin, 1);\n\t\tinvalidateAtom(restruct, this.data.end, 1);\n\n\t\tconst pp = {};\n\t\tif (this.data.bond) {\n\t\t\tObject.keys(this.data.bond).forEach((p) => {\n\t\t\t\tpp[p] = this.data.bond[p];\n\t\t\t});\n\t\t}\n\n\t\tpp.type = pp.type || Bond.PATTERN.TYPE.SINGLE;\n\t\tpp.begin = this.data.begin;\n\t\tpp.end = this.data.end;\n\n\t\tif (!(typeof this.data.bid === 'number'))\n\t\t\tthis.data.bid = struct.bonds.add(new Bond(pp));\n\t\telse\n\t\t\tstruct.bonds.set(this.data.bid, new Bond(pp));\n\n\t\tstruct.bondInitHalfBonds(this.data.bid);\n\t\tstruct.atomAddNeighbor(struct.bonds.get(this.data.bid).hb1);\n\t\tstruct.atomAddNeighbor(struct.bonds.get(this.data.bid).hb2);\n\n\t\t// notifyBondAdded\n\t\trestruct.bonds.set(this.data.bid, new ReBond(struct.bonds.get(this.data.bid)));\n\t\trestruct.markBond(this.data.bid, 1);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new BondDelete();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nBondAdd.prototype = new Base();\n\nfunction BondDelete(bid) {\n\tthis.data = { bid, bond: null, begin: null, end: null };\n\n\tthis.execute = function (restruct) { // eslint-disable-line max-statements\n\t\tconst struct = restruct.molecule;\n\t\tif (!this.data.bond) {\n\t\t\tthis.data.bond = struct.bonds.get(this.data.bid);\n\t\t\tthis.data.begin = this.data.bond.begin;\n\t\t\tthis.data.end = this.data.bond.end;\n\t\t}\n\n\t\tinvalidateBond(restruct, this.data.bid);\n\n\t\t// notifyBondRemoved\n\t\tconst rebond = restruct.bonds.get(this.data.bid);\n\t\t[rebond.b.hb1, rebond.b.hb2].forEach((hbid) => {\n\t\t\tconst hb = restruct.molecule.halfBonds.get(hbid);\n\t\t\tif (hb.loop >= 0)\n\t\t\t\trestruct.loopRemove(hb.loop);\n\t\t}, restruct);\n\t\trestruct.clearVisel(rebond.visel);\n\t\trestruct.bonds.delete(this.data.bid);\n\t\trestruct.markItemRemoved();\n\n\t\tconst bond = struct.bonds.get(this.data.bid);\n\t\t[bond.hb1, bond.hb2].forEach((hbid) => {\n\t\t\tconst hb = struct.halfBonds.get(hbid);\n\t\t\tconst atom = struct.atoms.get(hb.begin);\n\t\t\tconst pos = atom.neighbors.indexOf(hbid);\n\t\t\tconst prev = (pos + atom.neighbors.length - 1) % atom.neighbors.length;\n\t\t\tconst next = (pos + 1) % atom.neighbors.length;\n\t\t\tstruct.setHbNext(atom.neighbors[prev], atom.neighbors[next]);\n\t\t\tatom.neighbors.splice(pos, 1);\n\t\t});\n\t\tstruct.halfBonds.delete(bond.hb1);\n\t\tstruct.halfBonds.delete(bond.hb2);\n\n\t\tstruct.bonds.delete(this.data.bid);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new BondAdd();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nBondDelete.prototype = new Base();\n\nfunction BondAttr(bid, attribute, value) {\n\tthis.data = { bid, attribute, value };\n\tthis.data2 = null;\n\n\tthis.execute = function (restruct) {\n\t\tconst bond = restruct.molecule.bonds.get(this.data.bid);\n\n\t\tif (!this.data2) {\n\t\t\tthis.data2 = {\n\t\t\t\tbid: this.data.bid,\n\t\t\t\tattribute: this.data.attribute,\n\t\t\t\tvalue: bond[this.data.attribute]\n\t\t\t};\n\t\t}\n\n\t\tbond[this.data.attribute] = this.data.value;\n\n\t\tinvalidateBond(restruct, this.data.bid);\n\t\tif (this.data.attribute === 'type')\n\t\t\tinvalidateLoop(restruct, this.data.bid);\n\t};\n\n\tthis._isDummy = function (restruct) { // eslint-disable-line no-underscore-dangle\n\t\treturn restruct.molecule.bonds.get(this.data.bid)[this.data.attribute] === this.data.value;\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new BondAttr();\n\t\tret.data = this.data2;\n\t\tret.data2 = this.data;\n\t\treturn ret;\n\t};\n}\nBondAttr.prototype = new Base();\n\nfunction FragmentAdd(frid) {\n\tthis.frid = (typeof frid === 'undefined') ? null : frid;\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst frag = {};\n\n\t\tif (this.frid === null)\n\t\t\tthis.frid = struct.frags.add(frag);\n\t\telse\n\t\t\tstruct.frags.set(this.frid, frag);\n\n\t\trestruct.frags.set(this.frid, new ReFrag(frag)); // TODO add ReStruct.notifyFragmentAdded\n\t};\n\n\tthis.invert = function () {\n\t\treturn new FragmentDelete(this.frid);\n\t};\n}\nFragmentAdd.prototype = new Base();\n\nfunction FragmentDelete(frid) {\n\tthis.frid = frid;\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tinvalidateItem(restruct, 'frags', this.frid, 1);\n\t\trestruct.frags.delete(this.frid);\n\t\tstruct.frags.delete(this.frid); // TODO add ReStruct.notifyFragmentRemoved\n\t};\n\n\tthis.invert = function () {\n\t\treturn new FragmentAdd(this.frid);\n\t};\n}\nFragmentDelete.prototype = new Base();\n\nfunction RGroupAttr(rgid, attribute, value) {\n\tthis.data = { rgid, attribute, value };\n\tthis.data2 = null;\n\n\tthis.execute = function (restruct) {\n\t\tconst rgp = restruct.molecule.rgroups.get(this.data.rgid);\n\t\tif (!this.data2) {\n\t\t\tthis.data2 = {\n\t\t\t\trgid: this.data.rgid,\n\t\t\t\tattribute: this.data.attribute,\n\t\t\t\tvalue: rgp[this.data.attribute]\n\t\t\t};\n\t\t}\n\n\t\trgp[this.data.attribute] = this.data.value;\n\n\t\tinvalidateItem(restruct, 'rgroups', this.data.rgid);\n\t};\n\n\tthis._isDummy = function (restruct) { // eslint-disable-line no-underscore-dangle\n\t\treturn restruct.molecule.rgroups.get(this.data.rgid)[this.data.attribute] === this.data.value;\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new RGroupAttr();\n\t\tret.data = this.data2;\n\t\tret.data2 = this.data;\n\t\treturn ret;\n\t};\n}\nRGroupAttr.prototype = new Base();\n\nfunction RGroupFragment(rgid, frid, rg) {\n\tthis.type = 'OpAddOrDeleteRGFragment';\n\tthis.rgid_new = rgid;\n\tthis.rg_new = rg;\n\tthis.rgid_old = null;\n\tthis.rg_old = null;\n\tthis.frid = frid;\n\n\tthis.execute = function (restruct) { // eslint-disable-line max-statements\n\t\tconst struct = restruct.molecule;\n\t\tthis.rgid_old = this.rgid_old || RGroup.findRGroupByFragment(struct.rgroups, this.frid);\n\t\tthis.rg_old = (this.rgid_old ? struct.rgroups.get(this.rgid_old) : null);\n\n\t\tif (this.rg_old) {\n\t\t\tthis.rg_old.frags.delete(this.frid);\n\t\t\trestruct.clearVisel(restruct.rgroups.get(this.rgid_old).visel);\n\n\t\t\tif (this.rg_old.frags.size === 0) {\n\t\t\t\trestruct.rgroups.delete(this.rgid_old);\n\t\t\t\tstruct.rgroups.delete(this.rgid_old);\n\t\t\t\trestruct.markItemRemoved();\n\t\t\t} else {\n\t\t\t\trestruct.markItem('rgroups', this.rgid_old, 1);\n\t\t\t}\n\t\t}\n\n\t\tif (this.rgid_new) {\n\t\t\tlet rgNew = struct.rgroups.get(this.rgid_new);\n\t\t\tif (!rgNew) {\n\t\t\t\trgNew = this.rg_new || new RGroup();\n\t\t\t\tstruct.rgroups.set(this.rgid_new, rgNew);\n\t\t\t\trestruct.rgroups.set(this.rgid_new, new ReRGroup(rgNew));\n\t\t\t} else {\n\t\t\t\trestruct.markItem('rgroups', this.rgid_new, 1);\n\t\t\t}\n\t\t\trgNew.frags.add(this.frid);\n\t\t}\n\t};\n\n\tthis.invert = function () {\n\t\treturn new RGroupFragment(this.rgid_old, this.frid, this.rg_old);\n\t};\n}\nRGroupFragment.prototype = new Base();\n\nfunction UpdateIfThen(rgNew, rgOld, skipRgids = []) {\n\tthis.type = 'OpUpdateIfThenValues';\n\tthis.rgid_new = rgNew;\n\tthis.rgid_old = rgOld;\n\tthis.ifThenHistory = new Map();\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\n\t\tstruct.rgroups.forEach((rg, rgid) => {\n\t\t\tif (rg.ifthen === this.rgid_old && !skipRgids.includes(rgid)) {\n\t\t\t\trg.ifthen = this.rgid_new;\n\t\t\t\tthis.ifThenHistory.set(rgid, this.rgid_old);\n\t\t\t\tstruct.rgroups.set(rgid, rg);\n\t\t\t}\n\t\t});\n\t};\n\n\tthis.invert = function () {\n\t\treturn new RestoreIfThen(this.rgid_new, this.rgid_old, this.ifThenHistory);\n\t};\n}\nUpdateIfThen.prototype = new Base();\n\nfunction RestoreIfThen(rgNew, rgOld, history) {\n\tthis.type = 'OpRestoreIfThenValues';\n\tthis.rgid_new = rgNew;\n\tthis.rgid_old = rgOld;\n\tthis.ifThenHistory = history || new Map();\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\n\t\tthis.ifThenHistory.forEach((rg, rgid) => {\n\t\t\tconst rgValue = struct.rgroups.get(rgid);\n\t\t\trgValue.ifthen = rg;\n\t\t\tstruct.rgroups.set(rgid, rgValue);\n\t\t});\n\t};\n\n\tthis.invert = function () {\n\t\treturn new UpdateIfThen(this.rgid_old, this.rgid_new);\n\t};\n}\nRestoreIfThen.prototype = new Base();\n\nfunction RxnArrowAdd(pos) {\n\tthis.data = { pos, arid: null };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\n\t\tif (!(typeof this.data.arid === 'number'))\n\t\t\tthis.data.arid = struct.rxnArrows.add(new RxnArrow());\n\t\telse\n\t\t\tstruct.rxnArrows.set(this.data.arid, new RxnArrow());\n\n\t\t// notifyRxnArrowAdded\n\t\trestruct.rxnArrows.set(\n\t\t\tthis.data.arid,\n\t\t\tnew ReRxnArrow(struct.rxnArrows.get(this.data.arid))\n\t\t);\n\n\t\tstruct.rxnArrowSetPos(this.data.arid, new Vec2(this.data.pos));\n\n\t\tlet { reactants, products } = struct.getComponents();\n\n\t\treactants = reactants.reduce((acc, item) => acc.concat(...item), []);\n\t\tproducts = products.reduce((acc, item) => acc.concat(...item), []);\n\n\t\treactants.forEach((aid) => {\n\t\t\tconst atom = struct.atoms.get(aid);\n\t\t\tatom.rxnFragmentType = 1;\n\t\t});\n\n\t\tproducts.forEach((aid) => {\n\t\t\tconst atom = struct.atoms.get(aid);\n\t\t\tatom.rxnFragmentType = 2;\n\t\t});\n\n\t\tinvalidateItem(restruct, 'rxnArrows', this.data.arid, 1);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new RxnArrowDelete();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nRxnArrowAdd.prototype = new Base();\n\nfunction RxnArrowDelete(arid) {\n\tthis.data = { arid, pos: null };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\n\t\tif (!this.data.pos)\n\t\t\tthis.data.pos = struct.rxnArrows.get(this.data.arid).pp;\n\n\t\t// notifyRxnArrowRemoved\n\t\trestruct.markItemRemoved();\n\t\trestruct.clearVisel(restruct.rxnArrows.get(this.data.arid).visel);\n\t\trestruct.rxnArrows.delete(this.data.arid);\n\n\t\tstruct.rxnArrows.delete(this.data.arid);\n\n\t\tstruct.atoms.forEach((atom) => {\n\t\t\tatom.rxnFragmentType = -1;\n\t\t});\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new RxnArrowAdd();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nRxnArrowDelete.prototype = new Base();\n\nfunction RxnArrowMove(id, d, noinvalidate) {\n\tthis.data = { id, d, noinvalidate };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst id = this.data.id;\n\t\tconst d = this.data.d;\n\t\tstruct.rxnArrows.get(id).pp.add_(d); // eslint-disable-line no-underscore-dangle\n\t\trestruct.rxnArrows.get(id).visel.translate(scale.obj2scaled(d, restruct.render.options));\n\t\tthis.data.d = d.negated();\n\t\tif (!this.data.noinvalidate)\n\t\t\tinvalidateItem(restruct, 'rxnArrows', id, 1);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new RxnArrowMove();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nRxnArrowMove.prototype = new Base();\n\nfunction RxnPlusAdd(pos) {\n\tthis.data = { plid: null, pos };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tif (!(typeof this.data.plid === 'number'))\n\t\t\tthis.data.plid = struct.rxnPluses.add(new RxnPlus());\n\t\telse\n\t\t\tstruct.rxnPluses.set(this.data.plid, new RxnPlus());\n\n\t\t// notifyRxnPlusAdded\n\t\trestruct.rxnPluses.set(\n\t\t\tthis.data.plid,\n\t\t\tnew ReRxnPlus(struct.rxnPluses.get(this.data.plid))\n\t\t);\n\n\t\tstruct.rxnPlusSetPos(this.data.plid, new Vec2(this.data.pos));\n\n\t\tinvalidateItem(restruct, 'rxnPluses', this.data.plid, 1);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new RxnPlusDelete();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nRxnPlusAdd.prototype = new Base();\n\nfunction RxnPlusDelete(plid) {\n\tthis.data = { plid, pos: null };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tif (!this.data.pos)\n\t\t\tthis.data.pos = struct.rxnPluses.get(this.data.plid).pp;\n\n\t\t// notifyRxnPlusRemoved\n\t\trestruct.markItemRemoved();\n\t\trestruct.clearVisel(restruct.rxnPluses.get(this.data.plid).visel);\n\t\trestruct.rxnPluses.delete(this.data.plid);\n\n\t\tstruct.rxnPluses.delete(this.data.plid);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new RxnPlusAdd();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nRxnPlusDelete.prototype = new Base();\n\nfunction RxnPlusMove(id, d, noinvalidate) {\n\tthis.data = { id, d, noinvalidate };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tconst id = this.data.id;\n\t\tconst d = this.data.d;\n\t\tstruct.rxnPluses.get(id).pp.add_(d); // eslint-disable-line no-underscore-dangle\n\t\trestruct.rxnPluses.get(id).visel.translate(scale.obj2scaled(d, restruct.render.options));\n\t\tthis.data.d = d.negated();\n\t\tif (!this.data.noinvalidate)\n\t\t\tinvalidateItem(restruct, 'rxnPluses', id, 1);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new RxnPlusMove();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nRxnPlusMove.prototype = new Base();\n\nfunction SGroupDataMove(id, d) {\n\tthis.data = { id, d };\n\n\tthis.execute = function (restruct) {\n\t\tconst { sgroups } = restruct.molecule;\n\t\tsgroups.get(this.data.id).pp.add_(this.data.d); // eslint-disable-line no-underscore-dangle\n\t\tthis.data.d = this.data.d.negated();\n\t\tinvalidateItem(restruct, 'sgroupData', this.data.id, 1); // [MK] this currently does nothing since the DataSGroupData Visel only contains the highlighting/selection and SGroups are redrawn every time anyway\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new SGroupDataMove();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nSGroupDataMove.prototype = new Base();\n\nfunction CanvasLoad(struct) {\n\tthis.data = { struct };\n\n\tthis.execute = function (restruct) {\n\t\tconst oldStruct = restruct.molecule;\n\t\trestruct.clearVisels(); // TODO: What is it?\n\t\trestruct.render.setMolecule(this.data.struct);\n\t\tthis.data.struct = oldStruct;\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new CanvasLoad();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nCanvasLoad.prototype = new Base();\n\nfunction ChiralFlagAdd(pos) {\n\tthis.data = { pos };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tif (restruct.chiralFlags.size > 0) {\n\t\t\t// throw new Error('Cannot add more than one Chiral flag');\n\t\t\trestruct.clearVisel(restruct.chiralFlags.get(0).visel);\n\t\t\trestruct.chiralFlags.delete(0);\n\t\t}\n\n\t\trestruct.chiralFlags.set(0, new ReChiralFlag(pos));\n\t\tstruct.isChiral = true;\n\t\tinvalidateItem(restruct, 'chiralFlags', 0, 1);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new ChiralFlagDelete();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nChiralFlagAdd.prototype = new Base();\n\nfunction ChiralFlagDelete() {\n\tthis.data = { pos: null };\n\n\tthis.execute = function (restruct) {\n\t\tconst struct = restruct.molecule;\n\t\tif (restruct.chiralFlags.size < 1)\n\t\t\tthrow new Error('Cannot remove chiral flag');\n\t\trestruct.clearVisel(restruct.chiralFlags.get(0).visel);\n\t\tthis.data.pos = restruct.chiralFlags.get(0).pp;\n\t\trestruct.chiralFlags.delete(0);\n\t\tstruct.isChiral = false;\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new ChiralFlagAdd(this.data.pos);\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nChiralFlagDelete.prototype = new Base();\n\nfunction ChiralFlagMove(d) {\n\tthis.data = { d };\n\n\tthis.execute = function (restruct) {\n\t\trestruct.chiralFlags.get(0).pp.add_(this.data.d); // eslint-disable-line no-underscore-dangle\n\t\tthis.data.d = this.data.d.negated();\n\t\tinvalidateItem(restruct, 'chiralFlags', 0, 1);\n\t};\n\n\tthis.invert = function () {\n\t\tconst ret = new ChiralFlagMove();\n\t\tret.data = this.data;\n\t\treturn ret;\n\t};\n}\nChiralFlagMove.prototype = new Base();\n\nfunction AlignDescriptors() {\n\tthis.type = 'OpAlignDescriptors';\n\tthis.history = {};\n\n\tthis.execute = function (restruct) {\n\t\tconst sgroups = Array.from(restruct.molecule.sgroups.values()).reverse();\n\n\t\tconst structBox = restruct.molecule.getCoordBoundingBoxObj();\n\t\tlet alignPoint = new Vec2(structBox.max.x, structBox.min.y)\n\t\t\t.add(new Vec2(2.0, -1.0));\n\n\t\tsgroups.forEach((sg) => {\n\t\t\tthis.history[sg.id] = new Vec2(sg.pp);\n\t\t\talignPoint = alignPoint.add(new Vec2(0.0, 0.5));\n\t\t\tsg.pp = alignPoint;\n\t\t\trestruct.molecule.sgroups.set(sg.id, sg);\n\t\t\tinvalidateItem(restruct, 'sgroupData', sg.id, 1);\n\t\t});\n\t};\n\n\tthis.invert = function () {\n\t\treturn new RestoreDescriptorsPosition(this.history);\n\t};\n}\nAlignDescriptors.prototype = new Base();\n\nfunction RestoreDescriptorsPosition(history) {\n\tthis.type = 'OpRestoreDescriptorsPosition';\n\tthis.history = history;\n\n\tthis.execute = function (restruct) {\n\t\tconst sgroups = Array.from(restruct.molecule.sgroups.values());\n\n\t\tsgroups.forEach((sg) => {\n\t\t\tsg.pp = this.history[sg.id];\n\t\t\trestruct.molecule.sgroups.set(sg.id, sg);\n\t\t\tinvalidateItem(restruct, 'sgroupData', sg.id, 1);\n\t\t});\n\t};\n\n\tthis.invert = function () {\n\t\treturn new AlignDescriptors();\n\t};\n}\nRestoreDescriptorsPosition.prototype = new Base();\n\nfunction invalidateAtom(restruct, aid, level) {\n\tconst atom = restruct.atoms.get(aid);\n\n\trestruct.markAtom(aid, level ? 1 : 0);\n\n\tconst hbs = restruct.molecule.halfBonds;\n\n\tatom.a.neighbors.forEach((hbid) => {\n\t\tif (!hbs.has(hbid))\n\t\t\treturn;\n\n\t\tconst hb = hbs.get(hbid);\n\t\trestruct.markBond(hb.bid, 1);\n\t\trestruct.markAtom(hb.end, 0);\n\n\t\tif (level)\n\t\t\tinvalidateLoop(restruct, hb.bid);\n\t});\n}\n\nfunction invalidateLoop(restruct, bid) {\n\tconst bond = restruct.bonds.get(bid);\n\tconst lid1 = restruct.molecule.halfBonds.get(bond.b.hb1).loop;\n\tconst lid2 = restruct.molecule.halfBonds.get(bond.b.hb2).loop;\n\n\tif (lid1 >= 0)\n\t\trestruct.loopRemove(lid1);\n\n\tif (lid2 >= 0)\n\t\trestruct.loopRemove(lid2);\n}\n\nfunction invalidateBond(restruct, bid) {\n\tconst bond = restruct.bonds.get(bid);\n\tinvalidateLoop(restruct, bid);\n\tinvalidateAtom(restruct, bond.b.begin, 0);\n\tinvalidateAtom(restruct, bond.b.end, 0);\n}\n\nfunction invalidateItem(restruct, map, id, level) {\n\tif (map === 'atoms') {\n\t\tinvalidateAtom(restruct, id, level);\n\t} else if (map === 'bonds') {\n\t\tinvalidateBond(restruct, id);\n\t\tif (level > 0)\n\t\t\tinvalidateLoop(restruct, id);\n\t} else {\n\t\trestruct.markItem(map, id, level);\n\t}\n}\n\nexport default {\n\tAtomAdd,\n\tAtomDelete,\n\tAtomAttr,\n\tAtomMove,\n\tBondMove,\n\tLoopMove,\n\tSGroupAtomAdd,\n\tSGroupAtomRemove,\n\tSGroupAttr,\n\tSGroupCreate,\n\tSGroupDelete,\n\tSGroupAddToHierarchy,\n\tSGroupRemoveFromHierarchy,\n\tBondAdd,\n\tBondDelete,\n\tBondAttr,\n\tFragmentAdd,\n\tFragmentDelete,\n\tRGroupAttr,\n\tRGroupFragment,\n\tRxnArrowAdd,\n\tRxnArrowDelete,\n\tRxnArrowMove,\n\tRxnPlusAdd,\n\tRxnPlusDelete,\n\tRxnPlusMove,\n\tSGroupDataMove,\n\tCanvasLoad,\n\tChiralFlagAdd,\n\tChiralFlagDelete,\n\tChiralFlagMove,\n\tUpdateIfThen,\n\tAlignDescriptors\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { inRange } from 'lodash';\nimport Vec2 from '../../util/vec2';\n\nlet FRAC = Math.PI / 12; // '15º'\n\nfunction setFracAngle(angle) {\n\tFRAC = Math.PI / 180 * angle;\n}\n\nfunction calcAngle(pos0, pos1) {\n\tconst v = Vec2.diff(pos1, pos0);\n\treturn Math.atan2(v.y, v.x);\n}\n\nfunction fracAngle(angle, angle2) {\n\tif (angle2)\n\t\tangle = calcAngle(angle, angle2);\n\treturn Math.round(angle / FRAC) * FRAC;\n}\n\nfunction calcNewAtomPos(pos0, pos1, ctrlKey) {\n\tconst v = new Vec2(1, 0).rotate(ctrlKey ? calcAngle(pos0, pos1) : fracAngle(pos0, pos1));\n\tv.add_(pos0); // eslint-disable-line no-underscore-dangle\n\treturn v;\n}\n\nfunction degrees(angle) {\n\tlet degree = Math.round(angle / Math.PI * 180);\n\tif (degree > 180)\n\t\tdegree -= 360;\n\telse if (degree <= -180)\n\t\tdegree += 360;\n\treturn degree;\n}\n\nconst BONDS_MERGE_ANGLE = 10; // 'º'\nconst BONDS_MERGE_SCALE = 0.2;\n\nfunction mergeBondsParams(struct1, bond1, struct2, bond2) {\n\tconst begin1 = struct1.atoms.get(bond1.begin);\n\tconst begin2 = struct2.atoms.get(bond2.begin);\n\tconst end1 = struct1.atoms.get(bond1.end);\n\tconst end2 = struct2.atoms.get(bond2.end);\n\n\tconst angle = calcAngle(begin1.pp, end1.pp) - calcAngle(begin2.pp, end2.pp);\n\tconst mergeAngle = Math.abs(degrees(angle) % 180);\n\n\tconst scale = Vec2.dist(begin1.pp, end1.pp) / Vec2.dist(begin2.pp, end2.pp);\n\n\tconst merged = !inRange(mergeAngle, BONDS_MERGE_ANGLE, 180 - BONDS_MERGE_ANGLE) &&\n\t\tinRange(scale, 1 - BONDS_MERGE_SCALE, 1 + BONDS_MERGE_SCALE);\n\n\treturn { merged, angle, scale, cross: Math.abs(degrees(angle)) > 90 };\n}\n\nexport default {\n\tcalcAngle,\n\tfracAngle,\n\tcalcNewAtomPos,\n\tdegrees,\n\tsetFracAngle,\n\tmergeBondsParams\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromAtomsAttrs } from '../actions/atom';\n\nfunction APointTool(editor) {\n\tif (!(this instanceof APointTool))\n\t\treturn new APointTool(editor);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n}\n\nAPointTool.prototype.mousemove = function (event) {\n\tthis.editor.hover(this.editor.findItem(event, ['atoms']));\n};\n\nAPointTool.prototype.click = function (event) {\n\tvar editor = this.editor;\n\tvar struct = editor.render.ctab.molecule;\n\tvar ci = editor.findItem(event, ['atoms']);\n\n\tif (ci && ci.map === 'atoms') {\n\t\tthis.editor.hover(null);\n\t\tvar atom = struct.atoms.get(ci.id);\n\t\tvar res = editor.event.elementEdit.dispatch({\n\t\t\tattpnt: atom.attpnt\n\t\t});\n\t\tPromise.resolve(res).then((newatom) => {\n\t\t\tif (atom.attpnt !== newatom.attpnt) {\n\t\t\t\tvar action = fromAtomsAttrs(editor.render.ctab, ci.id, newatom);\n\t\t\t\teditor.update(action);\n\t\t\t}\n\t\t}).catch(() => null); // w/o changes\n\t\treturn true;\n\t}\n\treturn true;\n};\n\nexport default APointTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Atom, Bond } from '../../chem/struct';\n\nimport utils from '../shared/utils';\n\nimport { fromAtomAddition, fromAtomsAttrs } from '../actions/atom';\nimport { fromBondAddition } from '../actions/bond';\n\nfunction AtomTool(editor, atomProps) {\n\tif (!(this instanceof AtomTool)) {\n\t\tif (!editor.selection() || !editor.selection().atoms)\n\t\t\treturn new AtomTool(editor, atomProps);\n\n\t\tconst action = fromAtomsAttrs(editor.render.ctab, editor.selection().atoms, atomProps, true);\n\t\teditor.update(action);\n\t\teditor.selection(null);\n\t\treturn null;\n\t}\n\n\tthis.editor = editor;\n\tthis.atomProps = atomProps;\n\tthis.bondProps = { type: 1, stereo: Bond.PATTERN.STEREO.NONE };\n}\n\nAtomTool.prototype.mousedown = function (event) {\n\tthis.editor.hover(null);\n\tthis.editor.selection(null);\n\tconst ci = this.editor.findItem(event, ['atoms']);\n\n\tif (!ci) { // ci.type == 'Canvas'\n\t\tthis.dragCtx = {};\n\t} else if (ci.map === 'atoms') {\n\t\tthis.dragCtx = { item: ci };\n\t}\n};\n\nAtomTool.prototype.mousemove = function (event) {\n\tconst rnd = this.editor.render;\n\tif (!this.dragCtx || !this.dragCtx.item) {\n\t\tthis.editor.hover(this.editor.findItem(event, ['atoms']));\n\t\treturn;\n\t}\n\n\tconst dragCtx = this.dragCtx;\n\tconst ci = this.editor.findItem(event, ['atoms']);\n\n\tif (ci && ci.map === 'atoms' && ci.id === dragCtx.item.id) {\n\t\t// fromAtomsAttrs\n\t\tthis.editor.hover(this.editor.findItem(event, ['atoms']));\n\t\treturn;\n\t}\n\n\t// fromAtomAddition\n\tconst atom = rnd.ctab.molecule.atoms.get(dragCtx.item.id);\n\tlet angle = utils.calcAngle(atom.pp, rnd.page2obj(event));\n\tif (!event.ctrlKey)\n\t\tangle = utils.fracAngle(angle);\n\tconst degrees = utils.degrees(angle);\n\tthis.editor.event.message.dispatch({ info: degrees + 'º' });\n\tconst newAtomPos = utils.calcNewAtomPos(atom.pp, rnd.page2obj(event), event.ctrlKey);\n\tif (dragCtx.action)\n\t\tdragCtx.action.perform(rnd.ctab);\n\n\tdragCtx.action = fromBondAddition(\n\t\trnd.ctab,\n\t\tthis.bondProps, dragCtx.item.id, Object.assign({}, this.atomProps), newAtomPos, newAtomPos\n\t)[0];\n\tthis.editor.update(dragCtx.action, true);\n};\n\nAtomTool.prototype.mouseup = function (event) {\n\tif (this.dragCtx) {\n\t\tconst dragCtx = this.dragCtx;\n\t\tconst rnd = this.editor.render;\n\n\t\tthis.editor.update(dragCtx.action || (\n\t\t\tdragCtx.item ?\n\t\t\t\tfromAtomsAttrs(rnd.ctab, dragCtx.item.id, this.atomProps, true) :\n\t\t\t\tfromAtomAddition(rnd.ctab, rnd.page2obj(event), this.atomProps)\n\t\t));\n\n\t\tdelete this.dragCtx;\n\t}\n\tthis.editor.event.message.dispatch({\n\t\tinfo: false\n\t});\n};\n\nexport function atomLongtapEvent(tool, render) {\n\tconst dragCtx = tool.dragCtx;\n\tconst editor = tool.editor;\n\n\tconst atomid = dragCtx.item && dragCtx.item.id;\n\n\t// edit atom or add atom\n\tconst atom = (atomid !== undefined && atomid !== null) ?\n\t\trender.ctab.molecule.atoms.get(atomid) :\n\t\tnew Atom({ label: '' });\n\n\t// TODO: longtab event\n\tdragCtx.timeout = setTimeout(() => {\n\t\tdelete tool.dragCtx;\n\t\teditor.selection(null);\n\t\tconst res = editor.event.quickEdit.dispatch(atom);\n\t\tPromise.resolve(res).then((newatom) => {\n\t\t\tconst action = atomid ?\n\t\t\t\tfromAtomsAttrs(render.ctab, atomid, newatom) :\n\t\t\t\tfromAtomAddition(render.ctab, dragCtx.xy0, newatom);\n\t\t\teditor.update(action);\n\t\t}).catch(() => null); // w/o changes\n\t}, 750);\n\n\tdragCtx.stopTapping = function () {\n\t\tif (dragCtx.timeout) {\n\t\t\tclearTimeout(dragCtx.timeout);\n\t\t\tdelete tool.dragCtx.timeout;\n\t\t}\n\t};\n}\n\nexport default AtomTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport element from '../../chem/element';\n\nfunction AttachTool(editor, attachPoints) {\n\tif (!(this instanceof AttachTool))\n\t\treturn new AttachTool(editor, attachPoints);\n\n\tthis.attach = attachPoints || { atomid: 0, bondid: 0 };\n\tthis.editor = editor;\n\n\tthis.editor.selection({\n\t\tatoms: [this.attach.atomid],\n\t\tbonds: [this.attach.bondid]\n\t});\n}\n\nAttachTool.prototype.mousemove = function (event) {\n\tconst rnd = this.editor.render;\n\n\tconst ci = this.editor.findItem(event, ['atoms', 'bonds']);\n\tconst struct = rnd.ctab.molecule;\n\tif (ci && ((ci.map === 'atoms' && element.map[struct.atoms.get(ci.id).label]) || ci.map === 'bonds'))\n\t\tthis.editor.hover(ci);\n\telse\n\t\tthis.editor.hover(null);\n\treturn true;\n};\n\nAttachTool.prototype.click = function (event) {\n\tconst editor = this.editor;\n\tconst rnd = editor.render;\n\tconst struct = rnd.ctab.molecule;\n\tconst ci = editor.findItem(event, ['atoms', 'bonds']);\n\n\tif (ci && ((ci.map === 'atoms' && element.map[struct.atoms.get(ci.id).label]) || ci.map === 'bonds')) {\n\t\tif (ci.map === 'atoms')\n\t\t\tthis.attach.atomid = ci.id;\n\t\telse\n\t\t\tthis.attach.bondid = ci.id;\n\n\t\tthis.editor.selection({\n\t\t\tatoms: [this.attach.atomid],\n\t\t\tbonds: [this.attach.bondid]\n\t\t});\n\t\tthis.editor.event.attachEdit.dispatch(this.attach);\n\t}\n\treturn true;\n};\n\nexport default AttachTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport { Bond } from '../../chem/struct';\nimport utils from '../shared/utils';\n\nimport { fromBondAddition, bondChangingAction, fromBondsAttrs } from '../actions/bond';\n\nfunction BondTool(editor, bondProps) {\n\tif (!(this instanceof BondTool)) {\n\t\tif (!editor.selection() || !editor.selection().bonds)\n\t\t\treturn new BondTool(editor, bondProps);\n\n\t\tconst action = fromBondsAttrs(editor.render.ctab, editor.selection().bonds, bondProps);\n\t\teditor.update(action);\n\t\teditor.selection(null);\n\t\treturn null;\n\t}\n\n\tthis.editor = editor;\n\tthis.atomProps = { label: 'C' };\n\tthis.bondProps = bondProps;\n}\n\nBondTool.prototype.mousedown = function (event) {\n\tconst rnd = this.editor.render;\n\tthis.editor.hover(null);\n\tthis.editor.selection(null);\n\tthis.dragCtx = {\n\t\txy0: rnd.page2obj(event),\n\t\titem: this.editor.findItem(event, ['atoms', 'bonds'])\n\t};\n\tif (!this.dragCtx.item) // ci.type == 'Canvas'\n\t\tdelete this.dragCtx.item;\n\treturn true;\n};\n\nBondTool.prototype.mousemove = function (event) { // eslint-disable-line max-statements\n\tconst editor = this.editor;\n\tconst rnd = editor.render;\n\tif ('dragCtx' in this) {\n\t\tconst dragCtx = this.dragCtx;\n\n\t\tconst pos = rnd.page2obj(event);\n\t\tlet angle = utils.calcAngle(dragCtx.xy0, pos);\n\t\tif (!event.ctrlKey)\n\t\t\tangle = utils.fracAngle(angle);\n\n\t\tconst degrees = utils.degrees(angle);\n\t\tthis.editor.event.message.dispatch({ info: degrees + 'º' });\n\n\t\tif (!('item' in dragCtx) || dragCtx.item.map === 'atoms') {\n\t\t\tif ('action' in dragCtx)\n\t\t\t\tdragCtx.action.perform(rnd.ctab);\n\t\t\tlet i1;\n\t\t\tlet\ti2;\n\t\t\tlet\tp1;\n\t\t\tlet\tp2;\n\t\t\tif (('item' in dragCtx && dragCtx.item.map === 'atoms')) {\n\t\t\t\t// first mousedown event intersect with any atom\n\t\t\t\ti1 = dragCtx.item.id;\n\t\t\t\ti2 = editor.findItem(event, ['atoms'], dragCtx.item);\n\t\t\t} else {\n\t\t\t\t// first mousedown event intersect with any canvas\n\t\t\t\ti1 = this.atomProps;\n\t\t\t\tp1 = dragCtx.xy0;\n\t\t\t\ti2 = editor.findItem(event, ['atoms']);\n\t\t\t}\n\t\t\tlet dist = Number.MAX_VALUE;\n\t\t\tif (i2 && i2.map === 'atoms') {\n\t\t\t\t// after mousedown events is appered, cursor is moved and then cursor intersects any atoms\n\t\t\t\ti2 = i2.id;\n\t\t\t} else {\n\t\t\t\ti2 = this.atomProps;\n\t\t\t\tconst xy1 = rnd.page2obj(event);\n\t\t\t\tdist = Vec2.dist(dragCtx.xy0, xy1);\n\t\t\t\tif (p1) {\n\t\t\t\t\t// rotation only, leght of bond = 1;\n\t\t\t\t\tp2 = utils.calcNewAtomPos(p1, xy1, event.ctrlKey);\n\t\t\t\t} else {\n\t\t\t\t\t// first mousedown event intersect with any atom and\n\t\t\t\t\t// rotation only, leght of bond = 1;\n\t\t\t\t\tconst atom = rnd.ctab.molecule.atoms.get(i1);\n\t\t\t\t\tp1 = utils.calcNewAtomPos(atom.pp.get_xy0(), xy1, event.ctrlKey);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// don't rotate the bond if the distance between the start and end point is too small\n\t\t\tif (dist > 0.3)\n\t\t\t\tdragCtx.action = fromBondAddition(rnd.ctab, this.bondProps, i1, i2, p1, p2)[0];\n\t\t\telse\n\t\t\t\tdelete dragCtx.action;\n\t\t\tthis.editor.update(dragCtx.action, true);\n\t\t\treturn true;\n\t\t}\n\t}\n\tthis.editor.hover(this.editor.findItem(event, ['atoms', 'bonds']));\n\treturn true;\n};\n\nBondTool.prototype.mouseup = function (event) { // eslint-disable-line max-statements\n\tif ('dragCtx' in this) {\n\t\tvar dragCtx = this.dragCtx;\n\t\tvar rnd = this.editor.render;\n\t\tvar struct = rnd.ctab.molecule;\n\t\tif ('action' in dragCtx) {\n\t\t\tthis.editor.update(dragCtx.action);\n\t\t} else if (!('item' in dragCtx)) {\n\t\t\tvar xy = rnd.page2obj(event);\n\t\t\tvar v = new Vec2(1.0 / 2, 0).rotate(\n\t\t\t\tthis.bondProps.type === Bond.PATTERN.TYPE.SINGLE ? -Math.PI / 6 : 0\n\t\t\t);\n\t\t\tvar bondAddition = fromBondAddition(rnd.ctab,\n\t\t\t\tthis.bondProps, { label: 'C' }, { label: 'C' },\n\t\t\t\tVec2.diff(xy, v), Vec2.sum(xy, v));\n\n\t\t\tthis.editor.update(bondAddition[0]);\n\t\t} else if (dragCtx.item.map === 'atoms') {\n\t\t\t// when does it hapend?\n\t\t\tthis.editor.update(fromBondAddition(rnd.ctab, this.bondProps, dragCtx.item.id)[0]);\n\t\t} else if (dragCtx.item.map === 'bonds') {\n\t\t\tvar bondProps = Object.assign({}, this.bondProps);\n\t\t\tvar bond = struct.bonds.get(dragCtx.item.id);\n\n\t\t\tthis.editor.update(bondChangingAction(rnd.ctab, dragCtx.item.id, bond, bondProps));\n\t\t}\n\t\tdelete this.dragCtx;\n\t}\n\tthis.editor.event.message.dispatch({\n\t\tinfo: false\n\t});\n\treturn true;\n};\n\nexport default BondTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport { Bond } from '../../chem/struct';\nimport utils from '../shared/utils';\n\nimport { atomLongtapEvent } from './atom';\nimport { bondChangingAction } from '../actions/bond';\nimport { fromChain } from '../actions/chain';\nimport { fromItemsFuse, getItemsToFuse, getHoverToFuse } from '../actions/closely-fusing';\n\nfunction ChainTool(editor) {\n\tif (!(this instanceof ChainTool))\n\t\treturn new ChainTool(editor);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n}\n\nChainTool.prototype.mousedown = function (event) {\n\tconst rnd = this.editor.render;\n\tconst ci = this.editor.findItem(event, ['atoms', 'bonds']);\n\tthis.editor.hover(null);\n\tthis.dragCtx = {\n\t\txy0: rnd.page2obj(event),\n\t\titem: ci\n\t};\n\tif (ci && ci.map === 'atoms') {\n\t\tthis.editor.selection({ atoms: [ci.id] }); // for change atom\n\t\t// this event has to be stopped in others events by `tool.dragCtx.stopTapping()`\n\t\tatomLongtapEvent(this, rnd);\n\t}\n\tif (!this.dragCtx.item) // ci.type == 'Canvas'\n\t\tdelete this.dragCtx.item;\n\treturn true;\n};\n\nChainTool.prototype.mousemove = function (event) { // eslint-disable-line max-statements\n\tconst editor = this.editor;\n\tconst restruct = editor.render.ctab;\n\tconst dragCtx = this.dragCtx;\n\n\teditor.hover(this.editor.findItem(event, ['atoms', 'bonds']));\n\tif (!dragCtx) return true;\n\n\tif (dragCtx && dragCtx.stopTapping)\n\t\tdragCtx.stopTapping();\n\n\teditor.selection(null);\n\n\tif (!dragCtx.item || dragCtx.item.map === 'atoms') {\n\t\tif (dragCtx.action)\n\t\t\tdragCtx.action.perform(restruct);\n\n\t\tconst atoms = restruct.molecule.atoms;\n\n\t\tconst pos0 = dragCtx.item ?\n\t\t\tatoms.get(dragCtx.item.id).pp :\n\t\t\tdragCtx.xy0;\n\n\t\tconst pos1 = editor.render.page2obj(event);\n\t\tconst sectCount = Math.ceil(Vec2.diff(pos1, pos0).length());\n\n\t\tconst angle = event.ctrlKey ?\n\t\t\tutils.calcAngle(pos0, pos1) :\n\t\t\tutils.fracAngle(pos0, pos1);\n\n\t\tconst [action, newItems] = fromChain(restruct, pos0, angle, sectCount,\n\t\t\tdragCtx.item ? dragCtx.item.id : null);\n\n\t\teditor.event.message.dispatch({\n\t\t\tinfo: sectCount + ' sectors'\n\t\t});\n\n\t\tdragCtx.action = action;\n\t\teditor.update(dragCtx.action, true);\n\n\t\tdragCtx.mergeItems = getItemsToFuse(editor, newItems);\n\t\teditor.hover(getHoverToFuse(dragCtx.mergeItems));\n\n\t\treturn true;\n\t}\n\n\treturn true;\n};\n\nChainTool.prototype.mouseup = function () {\n\tconst dragCtx = this.dragCtx;\n\tif (!dragCtx)\n\t\treturn true;\n\tdelete this.dragCtx;\n\n\tconst editor = this.editor;\n\tconst restruct = editor.render.ctab;\n\tconst struct = restruct.molecule;\n\n\tif (dragCtx.stopTapping) dragCtx.stopTapping();\n\n\tif (!dragCtx.action && dragCtx.item && dragCtx.item.map === 'bonds') {\n\t\tconst bond = struct.bonds.get(dragCtx.item.id);\n\n\t\tdragCtx.action = bondChangingAction(restruct, dragCtx.item.id, bond, {\n\t\t\ttype: Bond.PATTERN.TYPE.SINGLE,\n\t\t\tstereo: Bond.PATTERN.STEREO.NONE\n\t\t});\n\t} else {\n\t\tdragCtx.action = dragCtx.action ?\n\t\t\tfromItemsFuse(restruct, dragCtx.mergeItems).mergeWith(dragCtx.action) :\n\t\t\tfromItemsFuse(restruct, dragCtx.mergeItems);\n\t}\n\n\teditor.selection(null);\n\teditor.hover(null);\n\n\tif (dragCtx.action)\n\t\teditor.update(dragCtx.action);\n\n\teditor.event.message.dispatch({\n\t\tinfo: false\n\t});\n\n\treturn true;\n};\n\nChainTool.prototype.cancel = ChainTool.prototype.mouseup;\n\nChainTool.prototype.mouseleave = ChainTool.prototype.mouseup;\n\nexport default ChainTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport element from '../../chem/element';\nimport { fromAtomsAttrs } from '../actions/atom';\n\nfunction ChargeTool(editor, charge) {\n\tif (!(this instanceof ChargeTool))\n\t\treturn new ChargeTool(editor, charge);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n\tthis.charge = charge;\n}\n\nChargeTool.prototype.mousemove = function (event) {\n\tvar rnd = this.editor.render;\n\tvar ci = this.editor.findItem(event, ['atoms']);\n\tvar struct = rnd.ctab.molecule;\n\tif (ci && ci.map === 'atoms' && element.map[struct.atoms.get(ci.id).label])\n\t\tthis.editor.hover(ci);\n\telse\n\t\tthis.editor.hover(null);\n\treturn true;\n};\n\nChargeTool.prototype.click = function (event) {\n\tvar editor = this.editor;\n\tvar rnd = editor.render;\n\tvar struct = rnd.ctab.molecule;\n\tvar ci = editor.findItem(event, ['atoms']);\n\tif (ci && ci.map === 'atoms' && element.map[struct.atoms.get(ci.id).label]) {\n\t\tthis.editor.hover(null);\n\t\tthis.editor.update(fromAtomsAttrs(rnd.ctab, ci.id, {\n\t\t\tcharge: struct.atoms.get(ci.id).charge + this.charge\n\t\t}));\n\t}\n\treturn true;\n};\n\nexport default ChargeTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromChiralFlagAddition, fromChiralFlagDeletion } from '../actions/chiral-flag';\n\nfunction ChiralFlagTool(editor) {\n\tif (!(this instanceof ChiralFlagTool)) {\n\t\tthis.editor = editor;\n\t\tconst rnd = this.editor.render;\n\n\t\tlet action = null;\n\t\tif (rnd.ctab.molecule.isChiral === false)\n\t\t\taction = fromChiralFlagAddition(rnd.ctab);\n\t\telse\n\t\t\taction = fromChiralFlagDeletion(rnd.ctab);\n\n\t\tthis.editor.update(action);\n\t}\n}\n\nexport default ChiralFlagTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport LassoHelper from './helper/lasso';\nimport { fromFragmentDeletion } from '../actions/fragment';\nimport { fromAtomDeletion } from '../actions/atom';\nimport { fromBondDeletion } from '../actions/bond';\nimport { fromArrowDeletion, fromPlusDeletion } from '../actions/reaction';\nimport { fromSgroupDeletion } from '../actions/sgroup';\nimport { fromChiralFlagDeletion } from '../actions/chiral-flag';\n\nfunction EraserTool(editor, mode) {\n\tif (!(this instanceof EraserTool)) {\n\t\tif (!editor.selection())\n\t\t\treturn new EraserTool(editor, mode);\n\n\t\tconst action = fromFragmentDeletion(editor.render.ctab, editor.selection());\n\t\teditor.update(action);\n\t\teditor.selection(null);\n\t\treturn null;\n\t}\n\n\tthis.editor = editor;\n\n\tthis.maps = ['atoms', 'bonds', 'rxnArrows', 'rxnPluses', 'sgroups', 'sgroupData', 'chiralFlags'];\n\tthis.lassoHelper = new LassoHelper(mode || 0, editor);\n}\n\nEraserTool.prototype.mousedown = function (event) {\n\tconst ci = this.editor.findItem(event, this.maps);\n\tif (!ci) // ci.type == 'Canvas'\n\t\tthis.lassoHelper.begin(event);\n};\n\nEraserTool.prototype.mousemove = function (event) {\n\tif (this.lassoHelper.running())\n\t\tthis.editor.selection(this.lassoHelper.addPoint(event));\n\telse\n\t\tthis.editor.hover(this.editor.findItem(event, this.maps));\n};\n\nEraserTool.prototype.mouseup = function (event) { // eslint-disable-line max-statements\n\tconst rnd = this.editor.render;\n\n\tif (this.lassoHelper.running()) { // TODO it catches more events than needed, to be re-factored\n\t\tthis.editor.update(fromFragmentDeletion(rnd.ctab, this.lassoHelper.end(event)));\n\t\tthis.editor.selection(null);\n\t}\n};\n\nEraserTool.prototype.click = function (event) {\n\tconst restruct = this.editor.render.ctab;\n\tconst ci = this.editor.findItem(event, this.maps);\n\n\tif (!ci) return; // ci.type == 'Canvas'\n\n\tthis.editor.hover(null);\n\tif (ci.map === 'atoms') {\n\t\tthis.editor.update(fromAtomDeletion(restruct, ci.id));\n\t} else if (ci.map === 'bonds') {\n\t\tthis.editor.update(fromBondDeletion(restruct, ci.id));\n\t} else if (ci.map === 'sgroups' || ci.map === 'sgroupData') {\n\t\tthis.editor.update(fromSgroupDeletion(restruct, ci.id));\n\t} else if (ci.map === 'rxnArrows') {\n\t\tthis.editor.update(fromArrowDeletion(restruct, ci.id));\n\t} else if (ci.map === 'rxnPluses') {\n\t\tthis.editor.update(fromPlusDeletion(restruct, ci.id));\n\t} else if (ci.map === 'chiralFlags') {\n\t\tthis.editor.update(fromChiralFlagDeletion(restruct));\n\t} else {\n\t\t// TODO re-factoring needed - should be \"map-independent\"\n\t\tconsole.error('EraserTool: unable to delete the object ' + ci.map + '[' + ci.id + ']');\n\t\treturn;\n\t}\n\tthis.editor.selection(null);\n};\n\nEraserTool.prototype.mouseleave = EraserTool.prototype.mouseup;\n\nEraserTool.prototype.cancel = function () {\n\tif (this.lassoHelper.running()) this.lassoHelper.end();\n\tthis.editor.selection(null);\n};\n\nexport default EraserTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport locate from './locate';\nimport draw from '../../../render/draw';\nimport scale from '../../../util/scale';\n\nfunction LassoHelper(mode, editor, fragment) {\n\tthis.mode = mode;\n\tthis.fragment = fragment;\n\tthis.editor = editor;\n}\n\nLassoHelper.prototype.getSelection = function () {\n\tconst rnd = this.editor.render;\n\n\tif (this.mode === 0)\n\t\treturn locate.inPolygon(rnd.ctab, this.points);\n\n\tif (this.mode === 1)\n\t\treturn locate.inRectangle(rnd.ctab, this.points[0], this.points[1]);\n\n\tthrow new Error('Selector mode unknown'); // eslint-disable-line no-else-return\n};\n\nLassoHelper.prototype.begin = function (event) {\n\tconst rnd = this.editor.render;\n\tthis.points = [rnd.page2obj(event)];\n\tif (this.mode === 1)\n\t\tthis.points.push(this.points[0]);\n};\n\nLassoHelper.prototype.running = function () {\n\treturn !!this.points;\n};\n\nLassoHelper.prototype.addPoint = function (event) {\n\tif (!this.points)\n\t\treturn null;\n\n\tconst rnd = this.editor.render;\n\n\tif (this.mode === 0)\n\t\tthis.points.push(rnd.page2obj(event));\n\telse if (this.mode === 1)\n\t\tthis.points = [this.points[0], rnd.page2obj(event)];\n\n\tthis.update();\n\treturn this.getSelection();\n};\n\nLassoHelper.prototype.update = function () {\n\tif (this.selection) {\n\t\tthis.selection.remove();\n\t\tthis.selection = null;\n\t}\n\n\tif (this.points && this.points.length > 1) {\n\t\tconst rnd = this.editor.render;\n\t\tconst dp = this.points.map(p => scale.obj2scaled(p, rnd.options).add(rnd.options.offset));\n\t\tthis.selection = this.mode === 0 ?\n\t\t\tdraw.selectionPolygon(rnd.paper, dp, rnd.options) :\n\t\t\tdraw.selectionRectangle(rnd.paper, dp[0], dp[1], rnd.options);\n\t}\n};\n\nLassoHelper.prototype.end = function () {\n\tconst ret = this.getSelection();\n\tthis.points = null;\n\tthis.update(null);\n\treturn ret;\n};\n\nexport default LassoHelper;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../../util/vec2';\n\nfunction getElementsInRectangle(restruct, p0, p1) {\n\tconst bondList = [];\n\tconst atomList = [];\n\n\tconst x0 = Math.min(p0.x, p1.x);\n\tconst x1 = Math.max(p0.x, p1.x);\n\tconst y0 = Math.min(p0.y, p1.y);\n\tconst y1 = Math.max(p0.y, p1.y);\n\n\trestruct.bonds.forEach((bond, bid) => {\n\t\tconst centre = Vec2.lc2(restruct.atoms.get(bond.b.begin).a.pp, 0.5,\n\t\t\trestruct.atoms.get(bond.b.end).a.pp, 0.5);\n\t\tif (centre.x > x0 && centre.x < x1 && centre.y > y0 && centre.y < y1)\n\t\t\tbondList.push(bid);\n\t});\n\n\trestruct.atoms.forEach((atom, aid) => {\n\t\tif (atom.a.pp.x > x0 && atom.a.pp.x < x1 && atom.a.pp.y > y0 && atom.a.pp.y < y1)\n\t\t\tatomList.push(aid);\n\t});\n\n\tconst rxnArrowsList = [];\n\tconst rxnPlusesList = [];\n\n\trestruct.rxnArrows.forEach((item, id) => {\n\t\tif (item.item.pp.x > x0 && item.item.pp.x < x1 && item.item.pp.y > y0 && item.item.pp.y < y1)\n\t\t\trxnArrowsList.push(id);\n\t});\n\n\trestruct.rxnPluses.forEach((item, id) => {\n\t\tif (item.item.pp.x > x0 && item.item.pp.x < x1 && item.item.pp.y > y0 && item.item.pp.y < y1)\n\t\t\trxnPlusesList.push(id);\n\t});\n\n\tconst chiralFlagList = [];\n\trestruct.chiralFlags.forEach((item, id) => {\n\t\tif (item.pp.x > x0 && item.pp.x < x1 && item.pp.y > y0 && item.pp.y < y1)\n\t\t\tchiralFlagList.push(id);\n\t});\n\n\tconst sgroupDataList = [];\n\trestruct.sgroupData.forEach((item, id) => {\n\t\tif (item.sgroup.pp.x > x0 && item.sgroup.pp.x < x1 &&\n\t\t\titem.sgroup.pp.y > y0 && item.sgroup.pp.y < y1)\n\t\t\tsgroupDataList.push(id);\n\t});\n\n\treturn {\n\t\tatoms: atomList,\n\t\tbonds: bondList,\n\t\trxnArrows: rxnArrowsList,\n\t\trxnPluses: rxnPlusesList,\n\t\tchiralFlags: chiralFlagList,\n\t\tsgroupData: sgroupDataList\n\t};\n}\n\nfunction getElementsInPolygon(restruct, rr) { // eslint-disable-line max-statements\n\tconst bondList = [];\n\tconst atomList = [];\n\tconst r = [];\n\n\tfor (let i = 0; i < rr.length; ++i)\n\t\tr[i] = new Vec2(rr[i].x, rr[i].y);\n\n\trestruct.bonds.forEach((bond, bid) => {\n\t\tconst centre = Vec2.lc2(restruct.atoms.get(bond.b.begin).a.pp, 0.5,\n\t\t\trestruct.atoms.get(bond.b.end).a.pp, 0.5);\n\t\tif (isPointInPolygon(r, centre))\n\t\t\tbondList.push(bid);\n\t});\n\n\trestruct.atoms.forEach((atom, aid) => {\n\t\tif (isPointInPolygon(r, atom.a.pp))\n\t\t\tatomList.push(aid);\n\t});\n\n\tconst rxnArrowsList = [];\n\tconst rxnPlusesList = [];\n\n\trestruct.rxnArrows.forEach((item, id) => {\n\t\tif (isPointInPolygon(r, item.item.pp))\n\t\t\trxnArrowsList.push(id);\n\t});\n\n\trestruct.rxnPluses.forEach((item, id) => {\n\t\tif (isPointInPolygon(r, item.item.pp))\n\t\t\trxnPlusesList.push(id);\n\t});\n\n\tconst chiralFlagList = [];\n\trestruct.chiralFlags.forEach((item, id) => {\n\t\tif (isPointInPolygon(r, item.pp))\n\t\t\tchiralFlagList.push(id);\n\t});\n\n\tconst sgroupDataList = [];\n\trestruct.sgroupData.forEach((item, id) => {\n\t\tif (isPointInPolygon(r, item.sgroup.pp))\n\t\t\tsgroupDataList.push(id);\n\t});\n\n\treturn {\n\t\tatoms: atomList,\n\t\tbonds: bondList,\n\t\trxnArrows: rxnArrowsList,\n\t\trxnPluses: rxnPlusesList,\n\t\tchiralFlags: chiralFlagList,\n\t\tsgroupData: sgroupDataList\n\t};\n}\n\n// TODO: test me see testPolygon from\n// 'Remove unused methods from render' commit\nfunction isPointInPolygon(r, p) { // eslint-disable-line max-statements\n\tvar d = new Vec2(0, 1);\n\tvar n = d.rotate(Math.PI / 2);\n\tvar v0 = Vec2.diff(r[r.length - 1], p);\n\tvar n0 = Vec2.dot(n, v0);\n\tvar d0 = Vec2.dot(d, v0);\n\tvar w0 = null;\n\tvar counter = 0;\n\tvar eps = 1e-5;\n\tvar flag1 = false;\n\tvar flag0 = false;\n\n\tfor (var i = 0; i < r.length; ++i) {\n\t\tvar v1 = Vec2.diff(r[i], p);\n\t\tvar w1 = Vec2.diff(v1, v0);\n\t\tvar n1 = Vec2.dot(n, v1);\n\t\tvar d1 = Vec2.dot(d, v1);\n\t\tflag1 = false;\n\t\tif (n1 * n0 < 0) {\n\t\t\tif (d1 * d0 > -eps) {\n\t\t\t\tif (d0 > -eps)\n\t\t\t\t\tflag1 = true;\n\t\t\t\t/* eslint-disable no-mixed-operators*/\n\t\t\t} else if ((Math.abs(n0) * Math.abs(d1) - Math.abs(n1) * Math.abs(d0)) * d1 > 0) {\n\t\t\t\t/* eslint-enable no-mixed-operators*/\n\t\t\t\tflag1 = true;\n\t\t\t}\n\t\t}\n\t\tif (flag1 && flag0 && Vec2.dot(w1, n) * Vec2.dot(w0, n) >= 0)\n\t\t\tflag1 = false;\n\t\tif (flag1)\n\t\t\tcounter++;\n\t\tv0 = v1;\n\t\tn0 = n1;\n\t\td0 = d1;\n\t\tw0 = w1;\n\t\tflag0 = flag1;\n\t}\n\treturn (counter % 2) !== 0;\n}\n\nexport default {\n\tinRectangle: getElementsInRectangle,\n\tinPolygon: getElementsInPolygon\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport RGroupAtomTool from './rgroupatom';\nimport SelectTool from './select';\nimport SGroupTool from './sgroup';\nimport EraserTool from './eraser';\nimport AtomTool from './atom';\nimport BondTool from './bond';\nimport ChainTool from './chain';\nimport ChiralFlagTool from './chiral-flag';\nimport TemplateTool from './template';\nimport ChargeTool from './charge';\nimport RGroupFragmentTool from './rgroupfragment';\nimport APointTool from './apoint';\nimport AttachTool from './attach';\nimport ReactionArrowTool from './reactionarrow';\nimport ReactionPlusTool from './reactionplus';\nimport ReactionMapTool from './reactionmap';\nimport ReactionUnmapTool from './reactionunmap';\nimport PasteTool from './paste';\nimport RotateTool from './rotate';\n\nexport default {\n\trgroupatom: RGroupAtomTool,\n\tselect: SelectTool,\n\tsgroup: SGroupTool,\n\teraser: EraserTool,\n\tatom: AtomTool,\n\tbond: BondTool,\n\tchain: ChainTool,\n\tchiralFlag: ChiralFlagTool,\n\ttemplate: TemplateTool,\n\tcharge: ChargeTool,\n\trgroupfragment: RGroupFragmentTool,\n\tapoint: APointTool,\n\tattach: AttachTool,\n\treactionarrow: ReactionArrowTool,\n\treactionplus: ReactionPlusTool,\n\treactionmap: ReactionMapTool,\n\treactionunmap: ReactionUnmapTool,\n\tpaste: PasteTool,\n\trotate: RotateTool\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromPaste } from '../actions/paste';\nimport { fromItemsFuse, getItemsToFuse, getHoverToFuse } from '../actions/closely-fusing';\n\nfunction PasteTool(editor, struct) {\n\tif (!(this instanceof PasteTool))\n\t\treturn new PasteTool(editor, struct);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n\tthis.struct = struct;\n\n\tconst rnd = editor.render;\n\tconst point = editor.lastEvent ?\n\t\trnd.page2obj(editor.lastEvent) :\n\t\tnull;\n\n\tconst [action, pasteItems] = fromPaste(rnd.ctab, this.struct, point);\n\tthis.action = action;\n\tthis.editor.update(this.action, true);\n\n\tthis.mergeItems = getItemsToFuse(this.editor, pasteItems);\n\tthis.editor.hover(getHoverToFuse(this.mergeItems), this);\n}\n\nPasteTool.prototype.mousemove = function (event) {\n\tconst rnd = this.editor.render;\n\n\tif (this.action)\n\t\tthis.action.perform(rnd.ctab);\n\n\tconst [action, pasteItems] = fromPaste(rnd.ctab, this.struct, rnd.page2obj(event));\n\tthis.action = action;\n\tthis.editor.update(this.action, true);\n\n\tthis.mergeItems = getItemsToFuse(this.editor, pasteItems);\n\tthis.editor.hover(getHoverToFuse(this.mergeItems));\n};\n\nPasteTool.prototype.mouseup = function () {\n\tconst editor = this.editor;\n\tconst restruct = editor.render.ctab;\n\n\teditor.selection(null);\n\n\tthis.action = this.action ?\n\t\tfromItemsFuse(restruct, this.mergeItems).mergeWith(this.action) :\n\t\tfromItemsFuse(restruct, this.mergeItems);\n\n\teditor.hover(null);\n\n\tif (this.action) {\n\t\tconst action = this.action;\n\t\tdelete this.action;\n\t\tthis.editor.update(action);\n\t}\n};\n\nPasteTool.prototype.cancel = function () {\n\tconst rnd = this.editor.render;\n\tthis.editor.hover(null);\n\tif (this.action) {\n\t\tthis.action.perform(rnd.ctab); // revert the action\n\t\tdelete this.action;\n\t\trnd.update();\n\t}\n};\nPasteTool.prototype.mouseleave = PasteTool.prototype.cancel;\n\nexport default PasteTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Action from '../shared/action';\nimport { fromArrowAddition } from '../actions/reaction';\nimport { fromMultipleMove } from '../actions/fragment';\n\nfunction ReactionArrowTool(editor) {\n\tif (!(this instanceof ReactionArrowTool))\n\t\treturn new ReactionArrowTool(editor);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n}\n\nReactionArrowTool.prototype.mousedown = function (event) {\n\tvar rnd = this.editor.render;\n\tvar ci = this.editor.findItem(event, ['rxnArrows']);\n\tif (ci && ci.map === 'rxnArrows') {\n\t\tthis.editor.hover(null);\n\t\tthis.editor.selection({ rxnArrows: [ci.id] });\n\t\tthis.dragCtx = {\n\t\t\txy0: rnd.page2obj(event),\n\t\t\taction: new Action()\n\t\t};\n\t}\n};\n\nReactionArrowTool.prototype.mousemove = function (event) {\n\tvar rnd = this.editor.render;\n\tif ('dragCtx' in this) {\n\t\tif (this.dragCtx.action)\n\t\t\tthis.dragCtx.action.perform(rnd.ctab);\n\n\t\tthis.dragCtx.action = fromMultipleMove(\n\t\t\trnd.ctab,\n\t\t\tthis.editor.selection() || {},\n\t\t\trnd.page2obj(event).sub(this.dragCtx.xy0)\n\t\t);\n\t\tthis.editor.update(this.dragCtx.action, true);\n\t} else {\n\t\tthis.editor.hover(this.editor.findItem(event, ['rxnArrows']));\n\t}\n};\n\nReactionArrowTool.prototype.mouseup = function () {\n\tif (this.dragCtx) {\n\t\tthis.editor.update(this.dragCtx.action); // TODO investigate, subsequent undo/redo fails\n\t\tdelete this.dragCtx;\n\t}\n};\n\nReactionArrowTool.prototype.click = function (event) {\n\tconst rnd = this.editor.render;\n\tif (rnd.ctab.molecule.rxnArrows.size < 1)\n\t\tthis.editor.update(fromArrowAddition(rnd.ctab, rnd.page2obj(event)));\n};\n\nexport default ReactionArrowTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport scale from '../../util/scale';\nimport Action from '../shared/action';\nimport draw from '../../render/draw';\n\nimport { fromAtomsAttrs } from '../actions/atom';\n\nfunction ReactionMapTool(editor) {\n\tif (!(this instanceof ReactionMapTool))\n\t\treturn new ReactionMapTool(editor);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n}\n\nReactionMapTool.prototype.mousedown = function (event) {\n\tconst rnd = this.editor.render;\n\tthis.rcs = rnd.ctab.molecule.getComponents();\n\n\tconst ci = this.editor.findItem(event, ['atoms']);\n\tif (ci && ci.map === 'atoms') {\n\t\tthis.editor.hover(null);\n\t\tthis.dragCtx = {\n\t\t\titem: ci,\n\t\t\txy0: rnd.page2obj(event)\n\t\t};\n\t}\n};\nReactionMapTool.prototype.mousemove = function (event) {\n\tvar rnd = this.editor.render;\n\tif ('dragCtx' in this) {\n\t\tvar ci = this.editor.findItem(event, ['atoms'], this.dragCtx.item);\n\t\tvar atoms = rnd.ctab.molecule.atoms;\n\t\tif (ci && ci.map === 'atoms' && isValidMap(this.rcs, this.dragCtx.item.id, ci.id)) {\n\t\t\tthis.editor.hover(ci);\n\t\t\tthis.updateLine(atoms.get(this.dragCtx.item.id).pp, atoms.get(ci.id).pp);\n\t\t} else {\n\t\t\tthis.editor.hover(null);\n\t\t\tthis.updateLine(atoms.get(this.dragCtx.item.id).pp, rnd.page2obj(event));\n\t\t}\n\t} else {\n\t\tthis.editor.hover(this.editor.findItem(event, ['atoms']));\n\t}\n};\n\nReactionMapTool.prototype.updateLine = function (p1, p2) {\n\tif (this.line) {\n\t\tthis.line.remove();\n\t\tthis.line = null;\n\t}\n\tif (p1 && p2) {\n\t\tvar rnd = this.editor.render;\n\t\tthis.line = draw.selectionLine(rnd.paper,\n\t\t\tscale.obj2scaled(p1, rnd.options).add(rnd.options.offset),\n\t\t\tscale.obj2scaled(p2, rnd.options).add(rnd.options.offset),\n\t\t\trnd.options);\n\t}\n};\n\nReactionMapTool.prototype.mouseup = function (event) { // eslint-disable-line max-statements\n\tif ('dragCtx' in this) {\n\t\tvar rnd = this.editor.render;\n\t\tvar ci = this.editor.findItem(event, ['atoms'], this.dragCtx.item);\n\t\tif (ci && ci.map === 'atoms' && isValidMap(this.rcs, this.dragCtx.item.id, ci.id)) {\n\t\t\tvar action = new Action();\n\t\t\tvar atoms = rnd.ctab.molecule.atoms;\n\t\t\tvar atom1 = atoms.get(this.dragCtx.item.id);\n\t\t\tvar atom2 = atoms.get(ci.id);\n\t\t\tvar aam1 = atom1.aam;\n\t\t\tvar aam2 = atom2.aam;\n\t\t\tif (!aam1 || aam1 !== aam2) {\n\t\t\t\tif (aam1 && aam1 !== aam2 || !aam1 && aam2) { // eslint-disable-line no-mixed-operators\n\t\t\t\t\tatoms.forEach((atom, aid) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\taid !== this.dragCtx.item.id &&\n\t\t\t\t\t\t\t((aam1 && atom.aam === aam1) || (aam2 && atom.aam === aam2))\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\taction.mergeWith(fromAtomsAttrs(rnd.ctab, aid, { aam: 0 }));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (aam1) {\n\t\t\t\t\taction.mergeWith(fromAtomsAttrs(rnd.ctab, ci.id, { aam: aam1 }));\n\t\t\t\t} else {\n\t\t\t\t\tvar aam = 0;\n\t\t\t\t\tatoms.forEach((atom) => {\n\t\t\t\t\t\taam = Math.max(aam, atom.aam || 0);\n\t\t\t\t\t});\n\t\t\t\t\taction.mergeWith(fromAtomsAttrs(rnd.ctab, this.dragCtx.item.id, { aam: aam + 1 }));\n\t\t\t\t\taction.mergeWith(fromAtomsAttrs(rnd.ctab, ci.id, { aam: aam + 1 }));\n\t\t\t\t}\n\t\t\t\tthis.editor.update(action);\n\t\t\t}\n\t\t}\n\t\tthis.updateLine(null);\n\t\tdelete this.dragCtx;\n\t}\n\tthis.editor.hover(null);\n};\n\nfunction isValidMap(rcs, aid1, aid2) {\n\tvar t1;\n\tvar\tt2;\n\tfor (var ri = 0; (!t1 || !t2) && ri < rcs.reactants.length; ri++) {\n\t\tvar ro = Array.from(rcs.reactants[ri]);\n\t\tif (!t1 && ro.indexOf(aid1) >= 0) t1 = 'r';\n\t\tif (!t2 && ro.indexOf(aid2) >= 0) t2 = 'r';\n\t}\n\tfor (var pi = 0; (!t1 || !t2) && pi < rcs.products.length; pi++) {\n\t\tvar po = Array.from(rcs.products[pi]);\n\t\tif (!t1 && po.indexOf(aid1) >= 0) t1 = 'p';\n\t\tif (!t2 && po.indexOf(aid2) >= 0) t2 = 'p';\n\t}\n\treturn t1 && t2 && t1 !== t2;\n}\n\nexport default ReactionMapTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { fromPlusAddition } from '../actions/reaction';\nimport { fromMultipleMove } from '../actions/fragment';\n\nfunction ReactionPlusTool(editor) {\n\tif (!(this instanceof ReactionPlusTool))\n\t\treturn new ReactionPlusTool(editor);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n}\n\nReactionPlusTool.prototype.mousedown = function (event) {\n\tvar rnd = this.editor.render;\n\tvar ci = this.editor.findItem(event, ['rxnPluses']);\n\tif (ci && ci.map === 'rxnPluses') {\n\t\tthis.editor.hover(null);\n\t\tthis.editor.selection({ rxnPluses: [ci.id] });\n\t\tthis.dragCtx = { xy0: rnd.page2obj(event) };\n\t}\n};\n\nReactionPlusTool.prototype.mousemove = function (event) {\n\tvar rnd = this.editor.render;\n\tif ('dragCtx' in this) {\n\t\tif (this.dragCtx.action)\n\t\t\tthis.dragCtx.action.perform(rnd.ctab);\n\t\tthis.dragCtx.action = fromMultipleMove(\n\t\t\trnd.ctab,\n\t\t\tthis.editor.selection() || {},\n\t\t\trnd.page2obj(event).sub(this.dragCtx.xy0)\n\t\t);\n\t\tthis.editor.update(this.dragCtx.action, true);\n\t} else {\n\t\tthis.editor.hover(this.editor.findItem(event, ['rxnPluses']));\n\t}\n};\n\nReactionPlusTool.prototype.mouseup = function () {\n\tif (this.dragCtx) {\n\t\tthis.editor.update(this.dragCtx.action); // TODO investigate, subsequent undo/redo fails\n\t\tdelete this.dragCtx;\n\t}\n};\n\nReactionPlusTool.prototype.click = function (event) {\n\tconst rnd = this.editor.render;\n\tthis.editor.update(fromPlusAddition(rnd.ctab, rnd.page2obj(event)));\n};\n\nexport default ReactionPlusTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Action from '../shared/action';\nimport { fromAtomsAttrs } from '../actions/atom';\n\nfunction ReactionUnmapTool(editor) {\n\tif (!(this instanceof ReactionUnmapTool))\n\t\treturn new ReactionUnmapTool(editor);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n}\nReactionUnmapTool.prototype.mousemove = function (event) {\n\tvar ci = this.editor.findItem(event, ['atoms']);\n\tif (ci && ci.map === 'atoms')\n\t\tthis.editor.hover(this.editor.render.ctab.molecule.atoms.get(ci.id).aam ? ci : null);\n\telse\n\t\tthis.editor.hover(null);\n};\nReactionUnmapTool.prototype.mouseup = function (event) {\n\tvar ci = this.editor.findItem(event, ['atoms']);\n\tvar atoms = this.editor.render.ctab.molecule.atoms;\n\tif (ci && ci.map === 'atoms' && atoms.get(ci.id).aam) {\n\t\tvar action = new Action();\n\t\tvar aam = atoms.get(ci.id).aam;\n\t\tatoms.forEach((atom, aid) => {\n\t\t\tif (atom.aam === aam)\n\t\t\t\taction.mergeWith(fromAtomsAttrs(this.editor.render.ctab, aid, { aam: 0 }));\n\t\t});\n\t\tthis.editor.update(action);\n\t}\n\tthis.editor.hover(null);\n};\n\nexport default ReactionUnmapTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { Atom } from '../../chem/struct';\nimport { fromAtomAddition, fromAtomsAttrs } from '../actions/atom';\n\nfunction RGroupAtomTool(editor) {\n\tif (!(this instanceof RGroupAtomTool)) {\n\t\t// TODO: map atoms with labels\n\t\teditor.selection(null);\n\t\treturn new RGroupAtomTool(editor);\n\t}\n\n\tthis.editor = editor;\n}\n\nRGroupAtomTool.prototype.mousemove = function (event) {\n\tthis.editor.hover(this.editor.findItem(event, ['atoms']));\n};\n\nRGroupAtomTool.prototype.click = function (event) {\n\tconst rnd = this.editor.render;\n\tconst ci = this.editor.findItem(event, ['atoms']);\n\n\tif (!ci) { // ci.type == 'Canvas'\n\t\tthis.editor.hover(null);\n\t\tpropsDialog(this.editor, null, rnd.page2obj(event));\n\t\treturn true;\n\t} else if (ci.map === 'atoms') {\n\t\tthis.editor.hover(null);\n\t\tpropsDialog(this.editor, ci.id);\n\t\treturn true;\n\t}\n\treturn true;\n};\n\nfunction propsDialog(editor, id, pos) {\n\tconst struct = editor.render.ctab.molecule;\n\tconst atom = (id || id === 0) ? struct.atoms.get(id) : null;\n\tconst rglabel = atom ? atom.rglabel : 0;\n\tconst label = atom ? atom.label : 'R#';\n\n\tconst res = editor.event.elementEdit.dispatch({\n\t\tlabel: 'R#',\n\t\trglabel,\n\t\tfragId: atom ? atom.fragment : null\n\t});\n\n\tPromise.resolve(res).then((elem) => {\n\t\t// TODO review: using Atom.attrlist as a source of default property values\n\t\telem = Object.assign({}, Atom.attrlist, elem);\n\n\t\tif (!id && id !== 0 && elem.rglabel) {\n\t\t\teditor.update(fromAtomAddition(editor.render.ctab, pos, elem));\n\t\t} else if (rglabel !== elem.rglabel) {\n\t\t\telem.aam = atom.aam; // WTF??\n\t\t\telem.attpnt = atom.attpnt;\n\n\t\t\tif (!elem.rglabel && label !== 'R#')\n\t\t\t\telem.label = label;\n\n\t\t\teditor.update(fromAtomsAttrs(editor.render.ctab, id, elem));\n\t\t}\n\t}).catch(() => null); // w/o changes\n}\n\nexport default RGroupAtomTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { RGroup } from '../../chem/struct';\nimport { fromRGroupAttrs, fromRGroupFragment, fromUpdateIfThen } from '../actions/rgroup';\n\nfunction RGroupFragmentTool(editor) {\n\tif (!(this instanceof RGroupFragmentTool)) {\n\t\t// TODO: check if it's a fragments already\n\t\teditor.selection(null);\n\t\treturn new RGroupFragmentTool(editor);\n\t}\n\n\tthis.editor = editor;\n}\n\nRGroupFragmentTool.prototype.mousemove = function (event) {\n\tthis.editor.hover(this.editor.findItem(event, ['frags', 'rgroups']));\n};\n\nRGroupFragmentTool.prototype.click = function (event) {\n\tconst editor = this.editor;\n\tconst struct = editor.render.ctab.molecule;\n\tconst ci = editor.findItem(event, ['frags', 'rgroups']);\n\n\tif (!ci) return true;\n\n\tthis.editor.hover(null);\n\n\tconst label = (ci.map === 'rgroups') ? ci.id :\n\t\tRGroup.findRGroupByFragment(struct.rgroups, ci.id);\n\n\tconst rg = Object.assign(\n\t\t{ label },\n\t\tci.map === 'frags' ? { fragId: ci.id } : struct.rgroups.get(ci.id)\n\t);\n\n\tconst res = editor.event.rgroupEdit.dispatch(rg);\n\n\tPromise.resolve(res).then((newRg) => {\n\t\tconst restruct = editor.render.ctab;\n\n\t\tlet action = null;\n\t\tif (ci.map !== 'rgroups') {\n\t\t\tconst rgidOld = RGroup.findRGroupByFragment(restruct.molecule.rgroups, ci.id);\n\n\t\t\taction = fromRGroupFragment(restruct, newRg.label, ci.id)\n\t\t\t\t.mergeWith(fromUpdateIfThen(restruct, newRg.label, rgidOld));\n\t\t} else {\n\t\t\taction = fromRGroupAttrs(restruct, ci.id, newRg);\n\t\t}\n\n\t\teditor.update(action);\n\t}).catch(() => null); // w/o changes\n\n\treturn true;\n};\n\nRGroupFragmentTool.prototype.cancel = function () {\n\tthis.editor.hover(null);\n};\n\nexport default RGroupFragmentTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\n\nimport utils from '../shared/utils';\nimport { fromRotate, fromFlip, fromBondAlign } from '../actions/rotate';\nimport { fromItemsFuse, getItemsToFuse, getHoverToFuse } from '../actions/closely-fusing';\n\nfunction RotateTool(editor, dir) {\n\tif (!(this instanceof RotateTool)) {\n\t\tif (!dir)\n\t\t\treturn new RotateTool(editor);\n\n\t\tconst restruct = editor.render.ctab;\n\t\tconst selection = editor.selection();\n\t\tconst singleBond = selection && selection.bonds &&\n\t\t\tObject.keys(selection).length === 1 &&\n\t\t\tselection.bonds.length === 1;\n\n\t\tconst action = !singleBond ? fromFlip(restruct, selection, dir) :\n\t\t\tfromBondAlign(restruct, selection.bonds[0], dir);\n\t\teditor.update(action);\n\t\treturn null;\n\t}\n\n\tthis.editor = editor;\n\n\tif (!editor.selection() || !editor.selection().atoms)\n\t\t// otherwise, clear selection\n\t\tthis.editor.selection(null);\n}\n\nRotateTool.prototype.mousedown = function (event) {\n\tvar xy0 = new Vec2();\n\tvar selection = this.editor.selection();\n\tvar rnd = this.editor.render;\n\tvar struct = rnd.ctab.molecule;\n\n\tif (selection && selection.atoms) {\n\t\tconsole.assert(selection.atoms.length > 0);\n\n\t\tvar rotId = null;\n\t\tvar rotAll = false;\n\n\t\tselection.atoms.forEach((aid) => {\n\t\t\tvar atom = struct.atoms.get(aid);\n\n\t\t\txy0.add_(atom.pp); // eslint-disable-line no-underscore-dangle\n\n\t\t\tif (rotAll)\n\t\t\t\treturn;\n\n\t\t\tatom.neighbors.find((nei) => {\n\t\t\t\tvar hb = struct.halfBonds.get(nei);\n\n\t\t\t\tif (selection.atoms.indexOf(hb.end) === -1) {\n\t\t\t\t\tif (hb.loop >= 0) {\n\t\t\t\t\t\tvar neiAtom = struct.atoms.get(aid);\n\t\t\t\t\t\tif (!neiAtom.neighbors.find((neiNei) => {\n\t\t\t\t\t\t\tvar neiHb = struct.halfBonds.get(neiNei);\n\t\t\t\t\t\t\treturn neiHb.loop >= 0 && selection.atoms.indexOf(neiHb.end) !== -1;\n\t\t\t\t\t\t})) {\n\t\t\t\t\t\t\trotAll = true;\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (rotId == null) {\n\t\t\t\t\t\trotId = aid;\n\t\t\t\t\t} else if (rotId !== aid) {\n\t\t\t\t\t\trotAll = true;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\n\t\tif (!rotAll && rotId !== null)\n\t\t\txy0 = struct.atoms.get(rotId).pp;\n\t\telse\n\t\t\txy0 = xy0.scaled(1 / selection.atoms.length);\n\t} else {\n\t\tstruct.atoms.forEach((atom) => { xy0.add_(atom.pp); }); // eslint-disable-line no-underscore-dangle, max-len\n\t\t// poor man struct center (without chiral, sdata, etc)\n\t\txy0 = xy0.scaled(1 / struct.atoms.size);\n\t}\n\tthis.dragCtx = {\n\t\txy0,\n\t\tangle1: utils.calcAngle(xy0, rnd.page2obj(event))\n\t};\n\treturn true;\n};\n\nRotateTool.prototype.mousemove = function (event) { // eslint-disable-line max-statements\n\tif (!this.dragCtx)\n\t\treturn true;\n\n\tconst rnd = this.editor.render;\n\tconst dragCtx = this.dragCtx;\n\n\tconst pos = rnd.page2obj(event);\n\tlet angle = utils.calcAngle(dragCtx.xy0, pos) - dragCtx.angle1;\n\tif (!event.ctrlKey)\n\t\tangle = utils.fracAngle(angle);\n\n\tconst degrees = utils.degrees(angle);\n\n\tif ('angle' in dragCtx && dragCtx.angle === degrees) return true;\n\tif ('action' in dragCtx)\n\t\tdragCtx.action.perform(rnd.ctab);\n\n\tdragCtx.angle = degrees;\n\tdragCtx.action = fromRotate(rnd.ctab, this.editor.selection(), dragCtx.xy0, angle);\n\n\tthis.editor.event.message.dispatch({ info: degrees + 'º' });\n\n\tconst expSel = this.editor.explicitSelected();\n\tdragCtx.mergeItems = getItemsToFuse(this.editor, expSel);\n\tthis.editor.hover(getHoverToFuse(dragCtx.mergeItems));\n\n\tthis.editor.update(dragCtx.action, true);\n\treturn true;\n};\n\nRotateTool.prototype.mouseup = function () {\n\tif (!this.dragCtx) return true;\n\tconst dragCtx = this.dragCtx;\n\tconst restruct = this.editor.render.ctab;\n\n\tconst action = dragCtx.action ?\n\t\tfromItemsFuse(restruct, dragCtx.mergeItems).mergeWith(dragCtx.action) :\n\t\tfromItemsFuse(restruct, dragCtx.mergeItems);\n\tdelete this.dragCtx;\n\n\tthis.editor.update(action);\n\tthis.editor.hover(null);\n\tif (dragCtx.mergeItems) this.editor.selection(null);\n\tthis.editor.event.message.dispatch({\n\t\tinfo: false\n\t});\n\treturn true;\n};\n\nRotateTool.prototype.cancel = RotateTool.prototype.mouseup;\nRotateTool.prototype.mouseleave = RotateTool.prototype.mouseup;\n\nexport default RotateTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { xor } from 'lodash/fp';\nimport { SGroup } from '../../chem/struct';\nimport LassoHelper from './helper/lasso';\nimport { sgroupDialog } from './sgroup';\nimport { atomLongtapEvent } from './atom';\nimport { fromMultipleMove } from '../actions/fragment';\nimport { fromAtomsAttrs } from '../actions/atom';\nimport { fromBondsAttrs } from '../actions/bond';\nimport { fromItemsFuse, getItemsToFuse, getHoverToFuse } from '../actions/closely-fusing';\nimport utils from '../shared/utils';\n\nfunction SelectTool(editor, mode) {\n\tif (!(this instanceof SelectTool))\n\t\treturn new SelectTool(editor, mode);\n\n\tthis.editor = editor;\n\tthis.lassoHelper = new LassoHelper(mode === 'lasso' ? 0 : 1, editor, mode === 'fragment');\n}\n\nSelectTool.prototype.mousedown = function (event) { // eslint-disable-line max-statements\n\tconst rnd = this.editor.render;\n\tconst ctab = rnd.ctab;\n\tconst struct = ctab.molecule;\n\n\tthis.editor.hover(null); // TODO review hovering for touch devicess\n\n\tconst selectFragment = (this.lassoHelper.fragment || event.ctrlKey);\n\tconst ci = this.editor.findItem(\n\t\tevent,\n\t\tselectFragment ?\n\t\t\t['frags', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'chiralFlags'] :\n\t\t\t['atoms', 'bonds', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'chiralFlags']\n\t);\n\n\tthis.dragCtx = {\n\t\titem: ci,\n\t\txy0: rnd.page2obj(event)\n\t};\n\n\tif (!ci || ci.map === 'atoms')\n\t\tatomLongtapEvent(this, rnd);\n\n\tif (!ci) { // ci.type == 'Canvas'\n\t\tdelete this.dragCtx.item;\n\t\tif (!this.lassoHelper.fragment)\n\t\t\tthis.lassoHelper.begin(event);\n\t\treturn true;\n\t}\n\n\tlet sel = closestToSel(ci);\n\tconst selection = this.editor.selection();\n\tif (ci.map === 'frags') {\n\t\tconst frag = ctab.frags.get(ci.id);\n\t\tsel = {\n\t\t\tatoms: frag.fragGetAtoms(ctab, ci.id),\n\t\t\tbonds: frag.fragGetBonds(ctab, ci.id)\n\t\t};\n\t} else if (ci.map === 'sgroups') {\n\t\tconst sgroup = ctab.sgroups.get(ci.id).item;\n\t\tsel = {\n\t\t\tatoms: SGroup.getAtoms(struct, sgroup),\n\t\t\tbonds: SGroup.getBonds(struct, sgroup)\n\t\t};\n\t} else if (ci.map === 'rgroups') {\n\t\tconst rgroup = ctab.rgroups.get(ci.id);\n\t\tsel = {\n\t\t\tatoms: rgroup.getAtoms(rnd),\n\t\t\tbonds: rgroup.getBonds(rnd)\n\t\t};\n\t} else if (ci.map === 'sgroupData') {\n\t\tif (isSelected(selection, ci)) return true;\n\t}\n\n\tif (!event.shiftKey)\n\t\tthis.editor.selection(isSelected(selection, ci) ? selection : sel);\n\telse\n\t\tthis.editor.selection(selMerge(sel, selection, true));\n\treturn true;\n};\n\nSelectTool.prototype.mousemove = function (event) {\n\tconst editor = this.editor;\n\tconst rnd = editor.render;\n\tconst restruct = editor.render.ctab;\n\tconst dragCtx = this.dragCtx;\n\tif (dragCtx && dragCtx.stopTapping)\n\t\tdragCtx.stopTapping();\n\tif (dragCtx && dragCtx.item) {\n\t\tconst atoms = restruct.molecule.atoms;\n\t\tconst selection = editor.selection();\n\t\tconst shouldDisplayDegree = dragCtx.item.map === 'atoms' &&\n\t\t\tatoms.get(dragCtx.item.id).neighbors.length === 1 &&\n\t\t\tselection.atoms.length === 1 &&\n\t\t\t!selection.bonds;\n\t\tif (shouldDisplayDegree) {\n\t\t\t// moving selected objects\n\t\t\tconst pos = rnd.page2obj(event);\n\t\t\tconst angle = utils.calcAngle(dragCtx.xy0, pos);\n\t\t\tconst degrees = utils.degrees(angle);\n\t\t\tthis.editor.event.message.dispatch({ info: degrees + 'º' });\n\t\t}\n\t\tif (dragCtx.action) {\n\t\t\tdragCtx.action.perform(restruct);\n\t\t\t// redraw the elements in unshifted position, lest the have different offset\n\t\t\teditor.update(dragCtx.action, true);\n\t\t}\n\n\t\tconst expSel = editor.explicitSelected();\n\t\tdragCtx.action = fromMultipleMove(\n\t\t\trestruct,\n\t\t\texpSel,\n\t\t\teditor.render.page2obj(event).sub(dragCtx.xy0)\n\t\t);\n\n\t\tdragCtx.mergeItems = getItemsToFuse(editor, expSel);\n\t\teditor.hover(getHoverToFuse(dragCtx.mergeItems));\n\n\t\teditor.update(dragCtx.action, true);\n\t\treturn true;\n\t}\n\n\tif (this.lassoHelper.running()) {\n\t\tconst sel = this.lassoHelper.addPoint(event);\n\t\teditor.selection(!event.shiftKey ? sel : selMerge(sel, editor.selection(), false));\n\t\treturn true;\n\t}\n\n\tconst maps = (this.lassoHelper.fragment || event.ctrlKey) ?\n\t\t['frags', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'chiralFlags'] :\n\t\t['atoms', 'bonds', 'sgroups', 'sgroupData', 'rgroups', 'rxnArrows', 'rxnPluses', 'chiralFlags'];\n\n\teditor.hover(editor.findItem(event, maps));\n\n\treturn true;\n};\n\nSelectTool.prototype.mouseup = function (event) { // eslint-disable-line max-statements\n\tconst editor = this.editor;\n\tconst restruct = editor.render.ctab;\n\tconst dragCtx = this.dragCtx;\n\n\tif (dragCtx && dragCtx.stopTapping)\n\t\tdragCtx.stopTapping();\n\n\tif (dragCtx && dragCtx.item) {\n\t\tdragCtx.action = dragCtx.action ?\n\t\t\tfromItemsFuse(restruct, dragCtx.mergeItems).mergeWith(dragCtx.action) :\n\t\t\tfromItemsFuse(restruct, dragCtx.mergeItems);\n\n\t\teditor.hover(null);\n\t\tif (dragCtx.mergeItems) editor.selection(null);\n\t\tif (dragCtx.action.operations.length !== 0)\n\t\t\teditor.update(dragCtx.action);\n\n\t\tdelete this.dragCtx;\n\t} else if (this.lassoHelper.running()) {\n\t\t// TODO it catches more events than needed, to be re-factored\n\t\tconst sel = this.lassoHelper.end();\n\t\teditor.selection(!event.shiftKey ? sel : selMerge(sel, editor.selection()));\n\t} else if (this.lassoHelper.fragment) {\n\t\tif (!event.shiftKey)\n\t\t\teditor.selection(null);\n\t}\n\tthis.editor.event.message.dispatch({\n\t\tinfo: false\n\t});\n\treturn true;\n};\n\nSelectTool.prototype.dblclick = function (event) { // eslint-disable-line max-statements\n\tvar editor = this.editor;\n\tvar rnd = this.editor.render;\n\tvar ci = this.editor.findItem(event, ['atoms', 'bonds', 'sgroups', 'sgroupData']);\n\tif (!ci) return true;\n\n\tvar struct = rnd.ctab.molecule;\n\tif (ci.map === 'atoms') {\n\t\tthis.editor.selection(closestToSel(ci));\n\t\tvar atom = struct.atoms.get(ci.id);\n\t\tvar ra = editor.event.elementEdit.dispatch(atom);\n\t\tPromise.resolve(ra).then((newatom) => {\n\t\t\t// TODO: deep compare to not produce dummy, e.g.\n\t\t\t// atom.label != attrs.label || !atom.atomList.equals(attrs.atomList)\n\t\t\teditor.update(fromAtomsAttrs(rnd.ctab, ci.id, newatom));\n\t\t}).catch(() => null); // w/o changes\n\t} else if (ci.map === 'bonds') {\n\t\tthis.editor.selection(closestToSel(ci));\n\t\tvar bond = rnd.ctab.bonds.get(ci.id).b;\n\t\tvar rb = editor.event.bondEdit.dispatch(bond);\n\t\tPromise.resolve(rb).then((newbond) => {\n\t\t\teditor.update(fromBondsAttrs(rnd.ctab, ci.id, newbond));\n\t\t}).catch(() => null); // w/o changes\n\t} else if (ci.map === 'sgroups' || ci.map === 'sgroupData') {\n\t\tthis.editor.selection(closestToSel(ci));\n\t\tsgroupDialog(this.editor, ci.id);\n\t}\n\treturn true;\n};\n\nSelectTool.prototype.cancel = function () {\n\tif (this.dragCtx && this.dragCtx.stopTapping)\n\t\tthis.dragCtx.stopTapping();\n\n\tif (this.dragCtx && this.dragCtx.action) {\n\t\tvar action = this.dragCtx.action;\n\t\tthis.editor.update(action);\n\t}\n\tif (this.lassoHelper.running())\n\t\tthis.editor.selection(this.lassoHelper.end());\n\n\tdelete this.dragCtx;\n\n\tthis.editor.hover(null);\n};\nSelectTool.prototype.mouseleave = SelectTool.prototype.cancel;\n\nfunction closestToSel(ci) {\n\tconst res = {};\n\tres[ci.map] = [ci.id];\n\treturn res;\n}\n\n// TODO: deep-merge?\nfunction selMerge(selection, add, reversible) {\n\tif (add) {\n\t\tObject.keys(add).forEach((item) => {\n\t\t\tif (!selection[item])\n\t\t\t\tselection[item] = add[item].slice();\n\t\t\telse\n\t\t\t\tselection[item] = uniqArray(selection[item], add[item], reversible);\n\t\t});\n\t}\n\treturn selection;\n}\n\nfunction isSelected(selection, item) {\n\treturn selection && selection[item.map] && selection[item.map].includes(item.id);\n}\n\nfunction uniqArray(dest, add, reversible) {\n\treturn add.reduce((res, item) => {\n\t\tif (reversible) dest = xor(dest, [item]);\n\t\telse if (!dest.includes(item)) dest.push(item);\n\t\treturn dest;\n\t}, []);\n}\n\nexport default SelectTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport isEqual from 'lodash/fp/isEqual';\n\nimport { SgContexts } from '../shared/constants';\n\nimport Pile from '../../util/pile';\nimport { SGroup } from '../../chem/struct';\nimport LassoHelper from './helper/lasso';\nimport { fromSgroupDeletion, fromSeveralSgroupAddition, fromSgroupAction } from '../actions/sgroup';\n\nconst searchMaps = ['atoms', 'bonds', 'sgroups', 'sgroupData'];\n\nfunction SGroupTool(editor, type) {\n\tif (!(this instanceof SGroupTool)) {\n\t\tvar selection = editor.selection() || {};\n\t\tif (!selection.atoms && !selection.bonds)\n\t\t\treturn new SGroupTool(editor, type);\n\n\t\tvar sgroups = editor.render.ctab.molecule.sgroups;\n\t\tvar selectedAtoms = editor.selection().atoms;\n\n\t\tvar id = sgroups.find((_, sgroup) => isEqual(sgroup.atoms, selectedAtoms));\n\n\t\tsgroupDialog(editor, id !== undefined ? id : null, type);\n\t\treturn null;\n\t}\n\n\tthis.editor = editor;\n\tthis.type = type;\n\n\tthis.lassoHelper = new LassoHelper(1, editor);\n\tthis.editor.selection(null);\n}\n\nSGroupTool.prototype.mousedown = function (event) {\n\tvar ci = this.editor.findItem(event, searchMaps);\n\tif (!ci) // ci.type == 'Canvas'\n\t\tthis.lassoHelper.begin(event);\n};\n\nSGroupTool.prototype.mousemove = function (event) {\n\tif (this.lassoHelper.running(event))\n\t\tthis.editor.selection(this.lassoHelper.addPoint(event));\n\telse\n\t\tthis.editor.hover(this.editor.findItem(event, searchMaps));\n};\n\nSGroupTool.prototype.mouseleave = function (event) {\n\tif (this.lassoHelper.running(event))\n\t\tthis.lassoHelper.end(event);\n};\n\nSGroupTool.prototype.mouseup = function (event) {\n\tvar id = null; // id of an existing group, if we're editing one\n\tvar selection = null; // atoms to include in a newly created group\n\tif (this.lassoHelper.running(event)) {\n\t\t// TODO it catches more events than needed, to be re-factored\n\t\tselection = this.lassoHelper.end(event);\n\t} else {\n\t\tvar ci = this.editor.findItem(event, searchMaps);\n\t\tif (!ci) // ci.type == 'Canvas'\n\t\t\treturn;\n\t\tthis.editor.hover(null);\n\n\t\tif (ci.map === 'atoms') {\n\t\t\t// if we click the SGroup tool on a single atom or bond, make a group out of those\n\t\t\tselection = { atoms: [ci.id] };\n\t\t} else if (ci.map === 'bonds') {\n\t\t\tvar bond = this.editor.render.ctab.bonds.get(ci.id);\n\t\t\tselection = { atoms: [bond.b.begin, bond.b.end] };\n\t\t} else if (ci.map === 'sgroups' || ci.map === 'sgroupData') {\n\t\t\tid = ci.id;\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// TODO: handle click on an existing group?\n\tif (id !== null || (selection && selection.atoms))\n\t\tsgroupDialog(this.editor, id, this.type);\n};\n\nSGroupTool.prototype.cancel = function () {\n\tif (this.lassoHelper.running()) this.lassoHelper.end();\n\tthis.editor.selection(null);\n};\n\nexport function sgroupDialog(editor, id, defaultType) {\n\tconst restruct = editor.render.ctab;\n\tconst struct = restruct.molecule;\n\tconst selection = editor.selection() || {};\n\tconst sg = id !== null ? struct.sgroups.get(id) : null;\n\tconst type = sg ? sg.type : defaultType;\n\tconst eventName = type === 'DAT' ? 'sdataEdit' : 'sgroupEdit';\n\n\tif (!selection.atoms && !selection.bonds && !sg) {\n\t\tconsole.info('There is no selection or sgroup');\n\t\treturn;\n\t}\n\n\tlet attrs = null;\n\tif (sg) {\n\t\tattrs = sg.getAttrs();\n\t\tattrs.context = getContextBySgroup(restruct, sg.atoms);\n\t} else {\n\t\tattrs = {\n\t\t\tcontext: getContextBySelection(restruct, selection)\n\t\t};\n\t}\n\n\tconst res = editor.event[eventName].dispatch({\n\t\ttype,\n\t\tattrs\n\t});\n\n\tPromise.resolve(res).then((newSg) => {\n\t\t// TODO: check before signal\n\t\tif (newSg.type !== 'DAT' && // when data s-group separates\n\t\t\tcheckOverlapping(struct, selection.atoms || [])) {\n\t\t\teditor.event.message.dispatch({\n\t\t\t\terror: 'Partial S-group overlapping is not allowed.'\n\t\t\t});\n\t\t} else {\n\t\t\tif (!sg && newSg.type !== 'DAT' && (!selection.atoms || selection.atoms.length === 0))\n\t\t\t\treturn;\n\n\t\t\tconst isDataSg = sg && sg.getAttrs().context === newSg.attrs.context;\n\n\t\t\tif (isDataSg) {\n\t\t\t\tconst action = fromSeveralSgroupAddition(restruct, newSg.type, sg.atoms, newSg.attrs)\n\t\t\t\t\t.mergeWith(fromSgroupDeletion(restruct, id));\n\n\t\t\t\teditor.update(action);\n\t\t\t\teditor.selection(selection);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst result = fromContextType(id, editor, newSg, selection);\n\t\t\teditor.update(result.action);\n\t\t\teditor.selection(result.selection);\n\t\t}\n\t}).catch(() => null); // w/o changes\n}\n\nfunction getContextBySgroup(restruct, sgAtoms) {\n\tconst struct = restruct.molecule;\n\n\tif (sgAtoms.length === 1)\n\t\treturn SgContexts.Atom;\n\n\tif (manyComponentsSelected(restruct, sgAtoms))\n\t\treturn SgContexts.Multifragment;\n\n\tif (singleComponentSelected(restruct, sgAtoms))\n\t\treturn SgContexts.Fragment;\n\n\tconst atomSet = new Pile(sgAtoms);\n\n\tconst sgBonds = Array.from(struct.bonds.values())\n\t\t.filter(bond => atomSet.has(bond.begin) && atomSet.has(bond.end));\n\n\treturn anyChainedBonds(sgBonds) ? SgContexts.Group : SgContexts.Bond;\n}\n\nfunction getContextBySelection(restruct, selection) {\n\tconst struct = restruct.molecule;\n\n\tif (selection.atoms && !selection.bonds)\n\t\treturn SgContexts.Atom;\n\n\tconst bonds = selection.bonds.map(bondid => struct.bonds.get(bondid));\n\n\tif (!anyChainedBonds(bonds))\n\t\treturn SgContexts.Bond;\n\n\tselection.atoms = selection.atoms || [];\n\n\tconst atomSet = new Pile(selection.atoms);\n\tconst allBondsSelected = bonds.every(bond => atomSet.has(bond.begin) && atomSet.has(bond.end));\n\n\tif (singleComponentSelected(restruct, selection.atoms) && allBondsSelected)\n\t\treturn SgContexts.Fragment;\n\n\treturn manyComponentsSelected(restruct, selection.atoms) ?\n\t\tSgContexts.Multifragment :\n\t\tSgContexts.Group;\n}\n\nfunction fromContextType(id, editor, newSg, currSelection) {\n\tconst restruct = editor.render.ctab;\n\tconst sg = restruct.molecule.sgroups.get(id);\n\tconst sourceAtoms = (sg && sg.atoms) || currSelection.atoms || [];\n\tconst context = newSg.attrs.context;\n\n\tconst result = fromSgroupAction(context, restruct, newSg, sourceAtoms, currSelection);\n\n\tresult.selection = result.selection || currSelection;\n\n\tif (id !== null && id !== undefined)\n\t\tresult.action = result.action.mergeWith(fromSgroupDeletion(restruct, id));\n\n\teditor.selection(result.selection);\n\n\treturn result;\n}\n\nfunction anyChainedBonds(bonds) {\n\tif (bonds.length === 0)\n\t\treturn true;\n\n\tfor (let i = 0; i < bonds.length; ++i) {\n\t\tconst fixedBond = bonds[i];\n\t\tfor (let j = 0; j < bonds.length; ++j) {\n\t\t\tif (i === j)\n\t\t\t\tcontinue;\n\n\t\t\tconst bond = bonds[j];\n\n\t\t\tif (fixedBond.end === bond.begin || fixedBond.end === bond.end)\n\t\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction singleComponentSelected(restruct, atoms) {\n\treturn countOfSelectedComponents(restruct, atoms) === 1;\n}\n\nfunction manyComponentsSelected(restruct, atoms) {\n\treturn countOfSelectedComponents(restruct, atoms) > 1;\n}\n\nfunction countOfSelectedComponents(restruct, atoms) {\n\tconst atomSet = new Pile(atoms);\n\n\treturn Array.from(restruct.connectedComponents.values())\n\t\t.reduce((acc, component) => acc + (atomSet.isSuperset(component) ? 1 : 0), 0);\n}\n\nfunction checkOverlapping(struct, atoms) {\n\tconst sgroups = atoms.reduce((res, aid) => {\n\t\tconst atom = struct.atoms.get(aid);\n\t\treturn res.union(atom.sgs);\n\t}, new Pile());\n\n\treturn Array.from(sgroups).some((sid) => {\n\t\tconst sg = struct.sgroups.get(sid);\n\t\tif (sg.type === 'DAT') return false;\n\t\tconst sgAtoms = SGroup.getAtoms(struct, sg);\n\n\t\treturn (sgAtoms.length < atoms.length) ?\n\t\t\tsgAtoms.findIndex(aid => (atoms.indexOf(aid) === -1)) >= 0 :\n\t\t\tatoms.findIndex(aid => (sgAtoms.indexOf(aid) === -1)) >= 0;\n\t});\n}\n\nexport default SGroupTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport utils from '../shared/utils';\nimport { fromTemplateOnCanvas, fromTemplateOnAtom, fromTemplateOnBondAction } from '../actions/template';\nimport { fromItemsFuse, getItemsToFuse, getHoverToFuse } from '../actions/closely-fusing';\n\nfunction TemplateTool(editor, tmpl) { // eslint-disable-line max-statements\n\tif (!(this instanceof TemplateTool))\n\t\treturn new TemplateTool(editor, tmpl);\n\n\tthis.editor = editor;\n\tthis.editor.selection(null);\n\n\tthis.template = {\n\t\taid: parseInt(tmpl.aid) || 0,\n\t\tbid: parseInt(tmpl.bid) || 0\n\t};\n\n\tconst frag = tmpl.struct;\n\tfrag.rescale();\n\n\tconst xy0 = new Vec2();\n\tfrag.atoms.forEach((atom) => {\n\t\txy0.add_(atom.pp); // eslint-disable-line no-underscore-dangle\n\t});\n\n\tthis.template.molecule = frag; // preloaded struct\n\tthis.findItems = [];\n\tthis.template.xy0 = xy0.scaled(1 / (frag.atoms.size || 1)); // template center\n\n\tconst atom = frag.atoms.get(this.template.aid);\n\tif (atom) {\n\t\tthis.template.angle0 = utils.calcAngle(atom.pp, this.template.xy0); // center tilt\n\t\tthis.findItems.push('atoms');\n\t}\n\n\tconst bond = frag.bonds.get(this.template.bid);\n\tif (bond) {\n\t\t// template location sign against attachment bond\n\t\tthis.template.sign = getSign(frag, bond, this.template.xy0);\n\t\tthis.findItems.push('bonds');\n\t}\n}\n\nTemplateTool.prototype.mousedown = function (event) { // eslint-disable-line max-statements\n\tconst editor = this.editor;\n\tconst restruct = editor.render.ctab;\n\tthis.editor.hover(null);\n\n\tthis.dragCtx = {\n\t\txy0: editor.render.page2obj(event),\n\t\titem: editor.findItem(event, this.findItems)\n\t};\n\n\tconst dragCtx = this.dragCtx;\n\tconst ci = dragCtx.item;\n\n\tif (!ci) { // ci.type == 'Canvas'\n\t\tdelete dragCtx.item;\n\t\treturn true;\n\t}\n\n\tif (ci.map === 'bonds') {\n\t\t// calculate fragment center\n\t\tconst molecule = restruct.molecule;\n\t\tconst xy0 = new Vec2();\n\t\tconst bond = molecule.bonds.get(ci.id);\n\t\tconst frid = molecule.atoms.get(bond.begin).fragment;\n\t\tconst frIds = molecule.getFragmentIds(frid);\n\t\tlet count = 0;\n\n\t\tlet loop = molecule.halfBonds.get(bond.hb1).loop;\n\n\t\tif (loop < 0) loop = molecule.halfBonds.get(bond.hb2).loop;\n\n\t\tif (loop >= 0) {\n\t\t\tconst loopHbs = molecule.loops.get(loop).hbs;\n\t\t\tloopHbs.forEach((hb) => {\n\t\t\t\txy0.add_(molecule.atoms.get(molecule.halfBonds.get(hb).begin).pp); // eslint-disable-line no-underscore-dangle, max-len\n\t\t\t\tcount++;\n\t\t\t});\n\t\t} else {\n\t\t\tfrIds.forEach((id) => {\n\t\t\t\txy0.add_(molecule.atoms.get(id).pp); // eslint-disable-line no-underscore-dangle\n\t\t\t\tcount++;\n\t\t\t});\n\t\t}\n\n\t\tdragCtx.v0 = xy0.scaled(1 / count);\n\n\t\tconst sign = getSign(molecule, bond, dragCtx.v0);\n\n\t\t// calculate default template flip\n\t\tdragCtx.sign1 = sign || 1;\n\t\tdragCtx.sign2 = this.template.sign;\n\t}\n\n\treturn true;\n};\n\nTemplateTool.prototype.mousemove = function (event) { // eslint-disable-line max-statements\n\tconst restruct = this.editor.render.ctab;\n\n\tif (!this.dragCtx) {\n\t\tthis.editor.hover(this.editor.findItem(event, this.findItems));\n\t\treturn true;\n\t}\n\n\tconst dragCtx = this.dragCtx;\n\tconst ci = dragCtx.item;\n\tlet pos0 = null;\n\tconst pos1 = this.editor.render.page2obj(event);\n\tconst struct = restruct.molecule;\n\n\t/* moving when attached to bond */\n\tif (ci && ci.map === 'bonds') {\n\t\tconst bond = struct.bonds.get(ci.id);\n\t\tlet sign = getSign(struct, bond, pos1);\n\n\t\tif (dragCtx.sign1 * this.template.sign > 0)\n\t\t\tsign = -sign;\n\n\t\tif (sign !== dragCtx.sign2 || !dragCtx.action) {\n\t\t\tif (dragCtx.action)\n\t\t\t\tdragCtx.action.perform(restruct); // undo previous action\n\n\t\t\tdragCtx.sign2 = sign;\n\t\t\t[action, pasteItems] = fromTemplateOnBondAction(\n\t\t\t\trestruct,\n\t\t\t\tthis.template,\n\t\t\t\tci.id,\n\t\t\t\tthis.editor.event,\n\t\t\t\tdragCtx.sign1 * dragCtx.sign2 > 0,\n\t\t\t\tfalse\n\t\t\t);\n\n\t\t\tdragCtx.action = action;\n\t\t\tthis.editor.update(dragCtx.action, true);\n\n\t\t\tdragCtx.mergeItems = getItemsToFuse(this.editor, pasteItems);\n\t\t\tthis.editor.hover(getHoverToFuse(dragCtx.mergeItems));\n\t\t}\n\t\treturn true;\n\t}\n\t/* end */\n\n\tlet extraBond = null;\n\t// calc initial pos and is extra bond needed\n\tif (!ci) { // ci.type == 'Canvas'\n\t\tpos0 = dragCtx.xy0;\n\t} else if (ci.map === 'atoms') {\n\t\tpos0 = struct.atoms.get(ci.id).pp;\n\t\textraBond = Vec2.dist(pos0, pos1) > 1;\n\t}\n\n\t// calc angle\n\tlet angle = utils.calcAngle(pos0, pos1);\n\tif (!event.ctrlKey)\n\t\tangle = utils.fracAngle(angle);\n\tconst degrees = utils.degrees(angle);\n\tthis.editor.event.message.dispatch({ info: degrees + 'º' });\n\n\t// check if anything changed since last time\n\tif (dragCtx.hasOwnProperty('angle') && dragCtx.angle === degrees && // eslint-disable-line no-prototype-builtins\n\t\t(!dragCtx.hasOwnProperty('extra_bond') || dragCtx.extra_bond === extraBond)) // eslint-disable-line no-prototype-builtins\n\t\treturn true;\n\n\t// undo previous action\n\tif (dragCtx.action)\n\t\tdragCtx.action.perform(restruct);\n\n\t// create new action\n\tdragCtx.angle = degrees;\n\tlet action = null;\n\tlet pasteItems;\n\n\tif (!ci) { // ci.type == 'Canvas'\n\t\t[action, pasteItems] = fromTemplateOnCanvas(\n\t\t\trestruct,\n\t\t\tthis.template,\n\t\t\tpos0,\n\t\t\tangle\n\t\t);\n\t} else if (ci.map === 'atoms') {\n\t\t[action, pasteItems] = fromTemplateOnAtom(\n\t\t\trestruct,\n\t\t\tthis.template,\n\t\t\tci.id,\n\t\t\tangle,\n\t\t\textraBond\n\t\t);\n\t\tdragCtx.extra_bond = extraBond;\n\t}\n\tdragCtx.action = action;\n\n\tthis.editor.update(dragCtx.action, true);\n\n\tdragCtx.mergeItems = getItemsToFuse(this.editor, pasteItems);\n\tthis.editor.hover(getHoverToFuse(dragCtx.mergeItems));\n\n\treturn true;\n};\n\nTemplateTool.prototype.mouseup = function (event) { // eslint-disable-line max-statements\n\tconst dragCtx = this.dragCtx;\n\tif (!dragCtx)\n\t\treturn true;\n\tdelete this.dragCtx;\n\n\tconst restruct = this.editor.render.ctab;\n\tconst struct = restruct.molecule;\n\tconst ci = dragCtx.item;\n\n\t/* after moving around bond */\n\tif (dragCtx.action && ci && ci.map === 'bonds') {\n\t\tdragCtx.action.perform(restruct); // revert drag action\n\t\tfromTemplateOnBondAction(\n\t\t\trestruct,\n\t\t\tthis.template,\n\t\t\tci.id,\n\t\t\tthis.editor.event,\n\t\t\tdragCtx.sign1 * dragCtx.sign2 > 0,\n\t\t\ttrue\n\t\t)\n\t\t\t.then(([action, pasteItems]) => {\n\t\t\t\tconst mergeItems = getItemsToFuse(this.editor, pasteItems);\n\t\t\t\taction = fromItemsFuse(restruct, mergeItems).mergeWith(action);\n\t\t\t\tthis.editor.update(action);\n\t\t\t});\n\t\treturn true;\n\t}\n\t/* end */\n\n\tlet action;\n\tlet pasteItems = null;\n\n\tif (!dragCtx.action) {\n\t\tif (!ci) { // ci.type == 'Canvas'\n\t\t\t[action, pasteItems] = fromTemplateOnCanvas(restruct, this.template, dragCtx.xy0, 0);\n\t\t\tdragCtx.action = action;\n\t\t} else if (ci.map === 'atoms') {\n\t\t\tconst degree = restruct.atoms.get(ci.id).a.neighbors.length;\n\t\t\tlet angle;\n\t\t\tlet extraBond;\n\n\t\t\tif (degree > 1) { // common case\n\t\t\t\tangle = null;\n\t\t\t\textraBond = true;\n\t\t\t} else if (degree === 1) { // on chain end\n\t\t\t\tconst atom = struct.atoms.get(ci.id);\n\t\t\t\tconst neiId = struct.halfBonds.get(atom.neighbors[0]).end;\n\t\t\t\tconst nei = struct.atoms.get(neiId);\n\n\t\t\t\tangle = event.ctrlKey ?\n\t\t\t\t\tutils.calcAngle(nei.pp, atom.pp) :\n\t\t\t\t\tutils.fracAngle(utils.calcAngle(nei.pp, atom.pp));\n\t\t\t\textraBond = false;\n\t\t\t} else { // on single atom\n\t\t\t\tangle = 0;\n\t\t\t\textraBond = false;\n\t\t\t}\n\n\t\t\t[action, pasteItems] = fromTemplateOnAtom(\n\t\t\t\trestruct,\n\t\t\t\tthis.template,\n\t\t\t\tci.id,\n\t\t\t\tangle,\n\t\t\t\textraBond\n\t\t\t);\n\t\t\tdragCtx.action = action;\n\t\t} else if (ci.map === 'bonds') {\n\t\t\tfromTemplateOnBondAction(\n\t\t\t\trestruct,\n\t\t\t\tthis.template,\n\t\t\t\tci.id,\n\t\t\t\tthis.editor.event,\n\t\t\t\tdragCtx.sign1 * dragCtx.sign2 > 0,\n\t\t\t\ttrue\n\t\t\t)\n\t\t\t\t.then(([action, pasteItems]) => { // eslint-disable-line no-shadow\n\t\t\t\t\tconst mergeItems = getItemsToFuse(this.editor, pasteItems);\n\t\t\t\t\taction = fromItemsFuse(restruct, mergeItems).mergeWith(action);\n\t\t\t\t\tthis.editor.update(action);\n\t\t\t\t});\n\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tthis.editor.selection(null);\n\n\tif (!dragCtx.mergeItems && pasteItems)\n\t\tdragCtx.mergeItems = getItemsToFuse(this.editor, pasteItems);\n\tdragCtx.action = dragCtx.action ?\n\t\tfromItemsFuse(restruct, dragCtx.mergeItems).mergeWith(dragCtx.action) :\n\t\tfromItemsFuse(restruct, dragCtx.mergeItems);\n\n\tthis.editor.hover(null);\n\tconst completeAction = dragCtx.action;\n\tif (completeAction && !completeAction.isDummy())\n\t\tthis.editor.update(completeAction);\n\tthis.editor.event.message.dispatch({\n\t\tinfo: false\n\t});\n\n\treturn true;\n};\n\nTemplateTool.prototype.cancel = TemplateTool.prototype.mouseup;\nTemplateTool.prototype.mouseleave = TemplateTool.prototype.mouseup;\n\nfunction getSign(molecule, bond, v) {\n\tconst begin = molecule.atoms.get(bond.begin).pp;\n\tconst end = molecule.atoms.get(bond.end).pp;\n\n\tconst sign = Vec2.cross(Vec2.diff(begin, end), Vec2.diff(v, end));\n\n\tif (sign > 0) return 1;\n\tif (sign < 0) return -1;\n\treturn 0;\n}\n\nexport default TemplateTool;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n// Single entry point to Raphaël library\n\nimport Raphael from 'raphael';\nimport Vec2 from './util/vec2';\n\n// TODO: refactor ugly prototype extensions to plain old functions\nRaphael.el.translateAbs = function (x, y) {\n\tthis.delta = this.delta || new Vec2();\n\tthis.delta.x += x - 0;\n\tthis.delta.y += y - 0;\n\tthis.transform('t' + this.delta.x.toString() + ',' + this.delta.y.toString());\n};\n\nRaphael.st.translateAbs = function (x, y) {\n\tthis.forEach((el) => {\n\t\tel.translateAbs(x, y);\n\t});\n};\n\nexport default Raphael;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport util from './util';\nimport Vec2 from '../util/vec2';\nimport Raphael from '../raphael-ext';\n\nconst tfx = util.tfx;\n\nfunction arrow(paper, a, b, options) {\n\tvar width = 5,\n\t\tlength = 7;\n\treturn paper.path('M{0},{1}L{2},{3}L{4},{5}M{2},{3}L{4},{6}', tfx(a.x), tfx(a.y), tfx(b.x), tfx(b.y), tfx(b.x - length), tfx(b.y - width), tfx(b.y + width))\n\t\t.attr(options.lineattr);\n}\n\nfunction plus(paper, c, options) {\n\tvar s = options.scale / 5;\n\treturn paper.path('M{0},{4}L{0},{5}M{2},{1}L{3},{1}', tfx(c.x), tfx(c.y), tfx(c.x - s), tfx(c.x + s), tfx(c.y - s), tfx(c.y + s))\n\t\t.attr(options.lineattr);\n}\n\nfunction bondSingle(paper, hb1, hb2, options) {\n\tvar a = hb1.p,\n\t\tb = hb2.p;\n\treturn paper.path(makeStroke(a, b))\n\t\t.attr(options.lineattr);\n}\n\nfunction bondSingleUp(paper, a, b2, b3, options) { // eslint-disable-line max-params\n\treturn paper.path('M{0},{1}L{2},{3}L{4},{5}Z', tfx(a.x), tfx(a.y), tfx(b2.x), tfx(b2.y), tfx(b3.x), tfx(b3.y))\n\t\t.attr(options.lineattr).attr({ fill: '#000' });\n}\n\nfunction bondSingleStereoBold(paper, a1, a2, a3, a4, options) { // eslint-disable-line max-params\n\treturn paper.path('M{0},{1}L{2},{3}L{4},{5}L{6},{7}Z',\n\t\ttfx(a1.x), tfx(a1.y), tfx(a2.x), tfx(a2.y), tfx(a3.x), tfx(a3.y), tfx(a4.x), tfx(a4.y))\n\t\t.attr(options.lineattr).attr({\n\t\t\tstroke: '#000',\n\t\t\tfill: '#000'\n\t\t});\n}\n\nfunction bondDoubleStereoBold(paper, sgBondPath, b1, b2, options) { // eslint-disable-line max-params\n\treturn paper.set([sgBondPath, paper.path('M{0},{1}L{2},{3}', tfx(b1.x), tfx(b1.y), tfx(b2.x), tfx(b2.y))\n\t\t.attr(options.lineattr)]);\n}\n\nfunction bondSingleDown(paper, hb1, d, nlines, step, options) { // eslint-disable-line max-params\n\tvar a = hb1.p,\n\t\tn = hb1.norm;\n\tvar bsp = 0.7 * options.stereoBond;\n\n\tvar path = '',\n\t\tp,\n\t\tq,\n\t\tr;\n\tfor (var i = 0; i < nlines; ++i) {\n\t\tr = a.addScaled(d, step * i);\n\t\tp = r.addScaled(n, bsp * (i + 0.5) / (nlines - 0.5));\n\t\tq = r.addScaled(n, -bsp * (i + 0.5) / (nlines - 0.5));\n\t\tpath += makeStroke(p, q);\n\t}\n\treturn paper.path(path).attr(options.lineattr);\n}\n\nfunction bondSingleEither(paper, hb1, d, nlines, step, options) { // eslint-disable-line max-params\n\tvar a = hb1.p,\n\t\tn = hb1.norm;\n\tvar bsp = 0.7 * options.stereoBond;\n\n\tvar path = 'M' + tfx(a.x) + ',' + tfx(a.y),\n\t\tr = a;\n\tfor (var i = 0; i < nlines; ++i) {\n\t\tr = a.addScaled(d, step * (i + 0.5)).addScaled(n,\n\t\t\t((i & 1) ? -1 : +1) * bsp * (i + 0.5) / (nlines - 0.5));\n\t\tpath += 'L' + tfx(r.x) + ',' + tfx(r.y);\n\t}\n\treturn paper.path(path)\n\t\t.attr(options.lineattr);\n}\n\nfunction bondDouble(paper, a1, a2, b1, b2, cisTrans, options) { // eslint-disable-line max-params\n\treturn paper.path(cisTrans ?\n\t\t'M{0},{1}L{6},{7}M{4},{5}L{2},{3}' :\n\t\t'M{0},{1}L{2},{3}M{4},{5}L{6},{7}',\n\ttfx(a1.x), tfx(a1.y), tfx(b1.x), tfx(b1.y), tfx(a2.x), tfx(a2.y), tfx(b2.x), tfx(b2.y))\n\t\t.attr(options.lineattr);\n}\n\nfunction bondSingleOrDouble(paper, hb1, hb2, nSect, options) { // eslint-disable-line max-statements, max-params\n\tvar a = hb1.p,\n\t\tb = hb2.p,\n\t\tn = hb1.norm;\n\tvar bsp = options.bondSpace / 2;\n\n\tvar path = '',\n\t\tpi,\n\t\tpp = a;\n\tfor (var i = 1; i <= nSect; ++i) {\n\t\tpi = Vec2.lc2(a, (nSect - i) / nSect, b, i / nSect);\n\t\tif (i & 1) {\n\t\t\tpath += makeStroke(pp, pi);\n\t\t} else {\n\t\t\tpath += makeStroke(pp.addScaled(n, bsp), pi.addScaled(n, bsp));\n\t\t\tpath += makeStroke(pp.addScaled(n, -bsp), pi.addScaled(n, -bsp));\n\t\t}\n\t\tpp = pi;\n\t}\n\treturn paper.path(path)\n\t\t.attr(options.lineattr);\n}\n\nfunction bondTriple(paper, hb1, hb2, options) {\n\tvar a = hb1.p,\n\t\tb = hb2.p,\n\t\tn = hb1.norm;\n\tvar a2 = a.addScaled(n, options.bondSpace);\n\tvar b2 = b.addScaled(n, options.bondSpace);\n\tvar a3 = a.addScaled(n, -options.bondSpace);\n\tvar b3 = b.addScaled(n, -options.bondSpace);\n\treturn paper.path(makeStroke(a, b) + makeStroke(a2, b2) + makeStroke(a3, b3))\n\t\t.attr(options.lineattr);\n}\n\nfunction bondAromatic(paper, paths, bondShift, options) {\n\tvar l1 = paper.path(paths[0]).attr(options.lineattr);\n\tvar l2 = paper.path(paths[1]).attr(options.lineattr);\n\tif (bondShift !== undefined && bondShift !== null)\n\t\t(bondShift > 0 ? l1 : l2).attr({ 'stroke-dasharray': '- ' });\n\n\treturn paper.set([l1, l2]);\n}\n\nfunction bondAny(paper, hb1, hb2, options) {\n\tvar a = hb1.p,\n\t\tb = hb2.p;\n\treturn paper.path(makeStroke(a, b))\n\t\t.attr(options.lineattr).attr({ 'stroke-dasharray': '- ' });\n}\n\nfunction reactingCenter(paper, p, options) {\n\tvar pathdesc = '';\n\tfor (var i = 0; i < p.length / 2; ++i)\n\t\tpathdesc += makeStroke(p[2 * i], p[(2 * i) + 1]);\n\treturn paper.path(pathdesc).attr(options.lineattr);\n}\n\nfunction topologyMark(paper, p, mark, options) {\n\tvar path = paper.text(p.x, p.y, mark)\n\t\t.attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontszsub,\n\t\t\tfill: '#000'\n\t\t});\n\tvar rbb = util.relBox(path.getBBox());\n\trecenterText(path, rbb);\n\treturn path;\n}\n\nfunction radicalCap(paper, p, options) {\n\tvar s = options.lineWidth * 0.9;\n\tvar dw = s,\n\t\tdh = 2 * s;\n\treturn paper.path('M{0},{1}L{2},{3}L{4},{5}',\n\t\ttfx(p.x - dw), tfx(p.y + dh), tfx(p.x), tfx(p.y), tfx(p.x + dw), tfx(p.y + dh))\n\t\t.attr({\n\t\t\tstroke: '#000',\n\t\t\t'stroke-width': options.lineWidth * 0.7,\n\t\t\t'stroke-linecap': 'square',\n\t\t\t'stroke-linejoin': 'miter'\n\t\t});\n}\n\nfunction radicalBullet(paper, p, options) {\n\treturn paper.circle(tfx(p.x), tfx(p.y), options.lineWidth)\n\t\t.attr({\n\t\t\tstroke: null,\n\t\t\tfill: '#000'\n\t\t});\n}\n\nfunction bracket(paper, d, n, c, bracketWidth, bracketHeight, options) { // eslint-disable-line max-params\n\tbracketWidth = bracketWidth || 0.25;\n\tbracketHeight = bracketHeight || 1.0;\n\tvar a0 = c.addScaled(n, -0.5 * bracketHeight);\n\tvar a1 = c.addScaled(n, 0.5 * bracketHeight);\n\tvar b0 = a0.addScaled(d, -bracketWidth);\n\tvar b1 = a1.addScaled(d, -bracketWidth);\n\n\treturn paper.path('M{0},{1}L{2},{3}L{4},{5}L{6},{7}',\n\t\ttfx(b0.x), tfx(b0.y), tfx(a0.x), tfx(a0.y),\n\t\ttfx(a1.x), tfx(a1.y), tfx(b1.x), tfx(b1.y)).attr(options.sgroupBracketStyle);\n}\n\nfunction selectionRectangle(paper, p0, p1, options) {\n\treturn paper.rect(tfx(Math.min(p0.x, p1.x)),\n\t\ttfx(Math.min(p0.y, p1.y)),\n\t\ttfx(Math.abs(p1.x - p0.x)),\n\t\ttfx(Math.abs(p1.y - p0.y))).attr(options.lassoStyle);\n}\n\nfunction selectionPolygon(paper, r, options) {\n\tvar v = r[r.length - 1];\n\tvar pstr = 'M' + tfx(v.x) + ',' + tfx(v.y);\n\tfor (var i = 0; i < r.length; ++i)\n\t\tpstr += 'L' + tfx(r[i].x) + ',' + tfx(r[i].y);\n\treturn paper.path(pstr).attr(options.lassoStyle);\n}\n\nfunction selectionLine(paper, p0, p1, options) {\n\treturn paper.path(makeStroke(p0, p1)).attr(options.lassoStyle);\n}\n\nfunction makeStroke(a, b) {\n\treturn 'M' + tfx(a.x) + ',' + tfx(a.y) +\n\t\t'L' + tfx(b.x) + ',' + tfx(b.y) + '\t';\n}\n\nfunction dashedPath(p0, p1, dash) {\n\tvar t0 = 0;\n\tvar t1 = Vec2.dist(p0, p1);\n\tvar d = Vec2.diff(p1, p0).normalized();\n\tvar black = true;\n\tvar path = '';\n\tvar i = 0;\n\n\twhile (t0 < t1) {\n\t\tvar len = dash[i % dash.length];\n\t\tvar t2 = t0 + Math.min(len, t1 - t0);\n\t\tif (black)\n\t\t\tpath += 'M ' + p0.addScaled(d, t0).coordStr() + ' L ' + p0.addScaled(d, t2).coordStr();\n\t\tt0 += len;\n\t\tblack = !black;\n\t\ti++;\n\t}\n\treturn path;\n}\n\nfunction aromaticBondPaths(a2, a3, b2, b3, mask, dash) { // eslint-disable-line max-params\n\tvar l1 = dash && (mask & 1) ? dashedPath(a2, b2, dash) : makeStroke(a2, b2);\n\tvar l2 = dash && (mask & 2) ? dashedPath(a3, b3, dash) : makeStroke(a3, b3);\n\n\treturn [l1, l2];\n}\n\nfunction recenterText(path, rbb) {\n\t// TODO: find a better way\n\tif (Raphael.vml) { // dirty hack\n\t\tconsole.assert(null, 'Souldn\\'t go here!');\n\t\tvar gap = rbb.height * 0.16;\n\t\tpath.translateAbs(0, gap);\n\t\trbb.y += gap;\n\t}\n}\n\nexport default {\n\trecenterText,\n\tarrow,\n\tplus,\n\taromaticBondPaths,\n\tbondSingle,\n\tbondSingleUp,\n\tbondSingleStereoBold,\n\tbondDoubleStereoBold,\n\tbondSingleDown,\n\tbondSingleEither,\n\tbondDouble,\n\tbondSingleOrDouble,\n\tbondTriple,\n\tbondAromatic,\n\tbondAny,\n\treactingCenter,\n\ttopologyMark,\n\tradicalCap,\n\tradicalBullet,\n\tbracket,\n\tselectionRectangle,\n\tselectionPolygon,\n\tselectionLine\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Raphael from '../raphael-ext';\nimport Box2Abs from '../util/box2abs';\nimport Vec2 from '../util/vec2';\nimport scale from '../util/scale';\n\nimport Struct from '../chem/struct';\nimport ReStruct from './restruct';\n\nimport defaultOptions from './options';\n\nvar DEBUG = { debug: false, logcnt: 0, logmouse: false, hl: false };\nDEBUG.logMethod = function () { };\n// DEBUG.logMethod = function (method) {addionalAtoms(\"METHOD: \" + method);\n\nfunction Render(clientArea, opt) {\n\tlet renderWidth = clientArea.clientWidth - 10;\n\tlet renderHeight = clientArea.clientHeight - 10;\n\trenderWidth = renderWidth > 0 ? renderWidth : 0;\n\trenderHeight = renderHeight > 0 ? renderHeight : 0;\n\n\tthis.userOpts = opt;\n\tthis.clientArea = clientArea;\n\tthis.paper = new Raphael(clientArea, renderWidth, renderHeight);\n\tthis.sz = Vec2.ZERO;\n\tthis.ctab = new ReStruct(new Struct(), this);\n\tthis.options = defaultOptions(this.userOpts);\n}\n\nRender.prototype.view2obj = function (p, isRelative) {\n\tvar scroll = this.scrollPos();\n\tif (!this.useOldZoom) {\n\t\tp = p.scaled(1 / this.options.zoom);\n\t\tscroll = scroll.scaled(1 / this.options.zoom);\n\t}\n\tp = isRelative ? p : p.add(scroll).sub(this.options.offset);\n\treturn scale.scaled2obj(p, this.options);\n};\n\nRender.prototype.obj2view = function (v, isRelative) {\n\tvar p = scale.obj2scaled(v, this.options);\n\tp = isRelative ? p : p.add(this.options.offset).sub(this.scrollPos().scaled(1 / this.options.zoom));\n\tif (!this.useOldZoom)\n\t\tp = p.scaled(this.options.zoom);\n\treturn p;\n};\n\nRender.prototype.scrollPos = function () {\n\treturn new Vec2(this.clientArea.scrollLeft, this.clientArea.scrollTop);\n};\n\nfunction cumulativeOffset(el) {\n\tvar curtop = 0;\n\tvar curleft = 0;\n\tif (el.parentNode) {\n\t\tdo {\n\t\t\tcurtop += el.offsetTop || 0;\n\t\t\tcurleft += el.offsetLeft || 0;\n\t\t\tel = el.offsetParent;\n\t\t} while (el);\n\t}\n\treturn { left: curleft, top: curtop };\n}\n\nRender.prototype.page2obj = function (pagePos) {\n\tvar offset = cumulativeOffset(this.clientArea);\n\tvar pp = new Vec2(pagePos.pageX - offset.left, pagePos.pageY - offset.top);\n\treturn this.view2obj(pp);\n};\n\nRender.prototype.setPaperSize = function (sz) {\n\tDEBUG.logMethod('setPaperSize');\n\tthis.sz = sz;\n\tthis.paper.setSize(sz.x * this.options.zoom, sz.y * this.options.zoom);\n\tthis.setViewBox(this.options.zoom);\n};\n\nRender.prototype.setOffset = function (newoffset) {\n\tDEBUG.logMethod('setOffset');\n\tvar delta = new Vec2(newoffset.x - this.options.offset.x, newoffset.y - this.options.offset.y);\n\tthis.clientArea.scrollLeft += delta.x;\n\tthis.clientArea.scrollTop += delta.y;\n\tthis.options.offset = newoffset;\n};\n\nRender.prototype.setZoom = function (zoom) {\n\t// when scaling the canvas down it may happen that the scaled canvas is smaller than the view window\n\t// don't forget to call setScrollOffset after zooming (or use extendCanvas directly)\n\tconsole.info('set zoom', zoom);\n\tthis.options.zoom = zoom;\n\tthis.paper.setSize(this.sz.x * zoom, this.sz.y * zoom);\n\tthis.setViewBox(zoom);\n};\n\nfunction calcExtend(sSz, x0, y0, x1, y1) { // eslint-disable-line max-params\n\tvar ex = (x0 < 0) ? -x0 : 0;\n\tvar ey = (y0 < 0) ? -y0 : 0;\n\n\tif (sSz.x < x1)\n\t\tex += x1 - sSz.x;\n\tif (sSz.y < y1)\n\t\tey += y1 - sSz.y;\n\treturn new Vec2(ex, ey);\n}\n\nRender.prototype.setScrollOffset = function (x, y) {\n\tvar clientArea = this.clientArea;\n\tvar cx = clientArea.clientWidth;\n\tvar cy = clientArea.clientHeight;\n\tvar e = calcExtend(this.sz.scaled(this.options.zoom), x, y,\n\t\tcx + x, cy + y)\n\t\t.scaled(1 / this.options.zoom);\n\tif (e.x > 0 || e.y > 0) {\n\t\tthis.setPaperSize(this.sz.add(e));\n\t\tvar d = new Vec2((x < 0) ? -x : 0,\n\t\t\t(y < 0) ? -y : 0).scaled(1 / this.options.zoom);\n\t\tif (d.x > 0 || d.y > 0) {\n\t\t\tthis.ctab.translate(d);\n\t\t\tthis.setOffset(this.options.offset.add(d));\n\t\t}\n\t}\n\tclientArea.scrollLeft = x;\n\tclientArea.scrollTop = y;\n\t// TODO: store drag position in scaled systems\n\t// scrollLeft = clientArea.scrollLeft;\n\t// scrollTop = clientArea.scrollTop;\n\tthis.update(false);\n};\n\nRender.prototype.setScale = function (z) {\n\tif (this.options.offset)\n\t\tthis.options.offset = this.options.offset.scaled(1 / z).scaled(z);\n\tthis.userOpts.scale *= z;\n\tthis.options = null;\n\tthis.update(true);\n};\n\nRender.prototype.setViewBox = function (z) {\n\tif (!this.useOldZoom)\n\t\tthis.paper.canvas.setAttribute('viewBox', '0 0 ' + this.sz.x + ' ' + this.sz.y);\n\telse\n\t\tthis.setScale(z);\n};\n\nRender.prototype.setMolecule = function (ctab) {\n\tDEBUG.logMethod('setMolecule');\n\tthis.paper.clear();\n\tthis.ctab = new ReStruct(ctab, this);\n\tthis.options.offset = new Vec2();\n\tthis.update(false);\n};\n\nRender.prototype.update = function (force, viewSz) { // eslint-disable-line max-statements\n\tviewSz = viewSz || new Vec2(this.clientArea.clientWidth || 100,\n\t\tthis.clientArea.clientHeight || 100);\n\n\tvar changes = this.ctab.update(force);\n\tthis.ctab.setSelection(); // [MK] redraw the selection bits where necessary\n\tif (changes) {\n\t\tvar sf = this.options.scale;\n\t\tvar bb = this.ctab.getVBoxObj().transform(scale.obj2scaled, this.options).translate(this.options.offset || new Vec2());\n\n\t\tif (!this.options.autoScale) {\n\t\t\tvar ext = Vec2.UNIT.scaled(sf);\n\t\t\tvar eb = bb.sz().length() > 0 ? bb.extend(ext, ext) : bb;\n\t\t\tvar vb = new Box2Abs(this.scrollPos(), viewSz.scaled(1 / this.options.zoom).sub(Vec2.UNIT.scaled(20)));\n\t\t\tvar cb = Box2Abs.union(vb, eb);\n\t\t\tif (!this.oldCb)\n\t\t\t\tthis.oldCb = new Box2Abs();\n\n\t\t\tvar sz = cb.sz().floor();\n\t\t\tvar delta = this.oldCb.p0.sub(cb.p0).ceil();\n\t\t\tthis.oldBb = bb;\n\t\t\tif (!this.sz || sz.x != this.sz.x || sz.y != this.sz.y)\n\t\t\t\tthis.setPaperSize(sz);\n\n\t\t\tthis.options.offset = this.options.offset || new Vec2();\n\t\t\tif (delta.x != 0 || delta.y != 0) {\n\t\t\t\tthis.setOffset(this.options.offset.add(delta));\n\t\t\t\tthis.ctab.translate(delta);\n\t\t\t}\n\t\t} else {\n\t\t\tvar sz1 = bb.sz();\n\t\t\tvar marg = this.options.autoScaleMargin;\n\t\t\tvar mv = new Vec2(marg, marg);\n\t\t\tvar csz = viewSz;\n\t\t\tif (csz.x < (2 * marg) + 1 || csz.y < (2 * marg) + 1)\n\t\t\t\tthrow new Error('View box too small for the given margin');\n\t\t\tvar rescale = Math.max(sz1.x / (csz.x - (2 * marg)), sz1.y / (csz.y - (2 * marg)));\n\t\t\tif (this.options.maxBondLength / rescale > 1.0)\n\t\t\t\trescale = 1.0;\n\t\t\tvar sz2 = sz1.add(mv.scaled(2 * rescale));\n\t\t\t/* eslint-disable no-mixed-operators*/\n\t\t\tthis.paper.setViewBox(bb.pos().x - marg * rescale - (csz.x * rescale - sz2.x) / 2, bb.pos().y - marg * rescale - (csz.y * rescale - sz2.y) / 2, csz.x * rescale, csz.y * rescale);\n\t\t\t/* eslint-enable no-mixed-operators*/\n\t\t}\n\t}\n};\n\nexport default Render;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport utils from '../editor/shared/utils';\nimport Vec2 from '../util/vec2';\n\nfunction defaultOptions(opt) {\n\tconst scaleFactor = opt.scale || 100;\n\n\tif (opt.rotationStep)\n\t\tutils.setFracAngle(opt.rotationStep);\n\n\tconst labelFontSize = Math.ceil(1.9 * (scaleFactor / 6));\n\tconst subFontSize = Math.ceil(0.7 * labelFontSize);\n\n\tconst defaultOptions = {\n\t\t// flags for debugging\n\t\tshowAtomIds: false,\n\t\tshowBondIds: false,\n\t\tshowHalfBondIds: false,\n\t\tshowLoopIds: false,\n\t\t// rendering customization flags\n\t\thideChiralFlag: false,\n\t\tshowValenceWarnings: true,\n\t\tautoScale: false, // scale structure to fit into the given view box, used in view mode\n\t\tautoScaleMargin: 0,\n\t\tmaxBondLength: 0, // 0 stands for \"not specified\"\n\t\tatomColoring: true,\n\t\thideImplicitHydrogen: false,\n\t\thideTerminalLabels: false,\n\t\t// atoms\n\t\tcarbonExplicitly: false,\n\t\tshowCharge: true,\n\t\tshowHydrogenLabels: 'on',\n\t\tshowValence: true,\n\t\t// bonds\n\t\taromaticCircle: true,\n\n\t\tscale: scaleFactor,\n\t\tzoom: 1.0,\n\t\toffset: new Vec2(),\n\n\t\tlineWidth: scaleFactor / 20,\n\t\tbondSpace: opt.doubleBondWidth || scaleFactor / 7,\n\t\tstereoBond: opt.stereoBondWidth || scaleFactor / 7,\n\t\tsubFontSize,\n\t\tfont: '30px Arial',\n\t\tfontsz: labelFontSize,\n\t\tfontszsub: subFontSize,\n\t\tfontRLabel: labelFontSize * 1.2,\n\t\tfontRLogic: labelFontSize * 0.7,\n\n\t\t/* styles */\n\t\tlineattr: {\n\t\t\tstroke: '#000',\n\t\t\t'stroke-width': opt.bondThickness || scaleFactor / 20,\n\t\t\t'stroke-linecap': 'round',\n\t\t\t'stroke-linejoin': 'round'\n\t\t},\n\t\t/* eslint-enable quote-props */\n\t\tselectionStyle: {\n\t\t\tfill: '#7f7',\n\t\t\tstroke: 'none'\n\t\t},\n\t\thighlightStyle: {\n\t\t\tstroke: '#0c0',\n\t\t\t'stroke-width': 0.6 * scaleFactor / 20\n\t\t},\n\t\tsgroupBracketStyle: {\n\t\t\tstroke: 'darkgray',\n\t\t\t'stroke-width': 0.5 * scaleFactor / 20\n\t\t},\n\t\tlassoStyle: {\n\t\t\tstroke: 'gray',\n\t\t\t'stroke-width': '1px'\n\t\t},\n\t\tatomSelectionPlateRadius: labelFontSize * 1.2\n\t};\n\n\treturn Object.assign({}, defaultOptions, opt);\n}\n\nexport default defaultOptions;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n/* eslint-disable guard-for-in,no-prototype-builtins */ // todo\n\n// ReStruct is to store all the auxiliary information for\n// Struct while rendering\nimport Box2Abs from '../../util/box2abs';\nimport Pool from '../../util/pool';\nimport Pile from '../../util/pile';\nimport Vec2 from '../../util/vec2';\n\nimport util from '../util';\n\nimport Struct from '../../chem/struct';\n\nimport ReAtom from './reatom';\nimport ReBond from './rebond';\nimport ReRxnPlus from './rerxnplus';\nimport ReRxnArrow from './rerxnarrow';\nimport ReFrag from './refrag';\nimport ReRGroup from './rergroup';\nimport ReDataSGroupData from './redatasgroupdata';\nimport ReChiralFlag from './rechiralflag';\nimport ReSGroup from './resgroup';\nimport ReLoop from './reloop';\n\nvar LAYER_MAP = {\n\tbackground: 0,\n\tselectionPlate: 1,\n\thighlighting: 2,\n\twarnings: 3,\n\tdata: 4,\n\tindices: 5\n};\n\nfunction ReStruct(molecule, render) { // eslint-disable-line max-statements\n\tthis.render = render;\n\tthis.atoms = new Pool();\n\tthis.bonds = new Pool();\n\tthis.reloops = new Pool();\n\tthis.rxnPluses = new Pool();\n\tthis.rxnArrows = new Pool();\n\tthis.frags = new Pool();\n\tthis.rgroups = new Pool();\n\tthis.sgroups = new Pool();\n\tthis.sgroupData = new Pool();\n\tthis.chiralFlags = new Pool();\n\tthis.molecule = molecule || new Struct();\n\tthis.initialized = false;\n\tthis.layers = [];\n\tthis.initLayers();\n\n\tthis.connectedComponents = new Pool();\n\tthis.ccFragmentType = new Pool();\n\n\tthis.clearMarks();\n\n\tthis.structChanged = false;\n\n\t// TODO: eachItem ?\n\n\tmolecule.atoms.forEach((atom, aid) => { this.atoms.set(aid, new ReAtom(atom)); });\n\n\tmolecule.bonds.forEach((bond, bid) => { this.bonds.set(bid, new ReBond(bond)); });\n\n\tmolecule.loops.forEach((loop, lid) => { this.reloops.set(lid, new ReLoop(loop)); });\n\n\tmolecule.rxnPluses.forEach((item, id) => { this.rxnPluses.set(id, new ReRxnPlus(item)); });\n\n\tmolecule.rxnArrows.forEach((item, id) => { this.rxnArrows.set(id, new ReRxnArrow(item)); });\n\n\tmolecule.frags.forEach((item, id) => { this.frags.set(id, new ReFrag(item)); });\n\n\tmolecule.rgroups.forEach((item, id) => { this.rgroups.set(id, new ReRGroup(item)); });\n\n\tmolecule.sgroups.forEach((item, id) => {\n\t\tthis.sgroups.set(id, new ReSGroup(item));\n\t\tif (item.type === 'DAT' && !item.data.attached)\n\t\t\tthis.sgroupData.set(id, new ReDataSGroupData(item)); // [MK] sort of a hack, we use the SGroup id for the data field id\n\t});\n\n\tif (molecule.isChiral) {\n\t\tvar bb = molecule.getCoordBoundingBox();\n\t\tthis.chiralFlags.set(0, new ReChiralFlag(new Vec2(bb.max.x, bb.min.y - 1)));\n\t}\n}\n\n/**\n * @param aid { number }\n * @param atom { Atom }\n */\nReStruct.prototype.connectedComponentRemoveAtom = function (aid, atom = null) {\n\tatom = atom || this.atoms.get(aid);\n\tif (atom.component < 0)\n\t\treturn;\n\tvar cc = this.connectedComponents.get(atom.component);\n\n\tcc.delete(aid);\n\tif (cc.size < 1)\n\t\tthis.connectedComponents.delete(atom.component);\n\n\tatom.component = -1;\n};\n\nReStruct.prototype.clearConnectedComponents = function () {\n\tthis.connectedComponents.clear();\n\tthis.atoms.forEach((atom) => { atom.component = -1; });\n};\n\n/**\n * @param aid { Array|number }\n * @param adjacentComponents { Pile }\n * @returns { Pile }\n */\nReStruct.prototype.getConnectedComponent = function (aid, adjacentComponents) {\n\tconst list = Array.isArray(aid) ? Array.from(aid) : [aid];\n\tconst ids = new Pile();\n\n\twhile (list.length > 0) {\n\t\tconst aid = list.pop();\n\t\tids.add(aid);\n\t\tconst atom = this.atoms.get(aid);\n\n\t\tif (atom.component >= 0)\n\t\t\tadjacentComponents.add(atom.component);\n\n\t\tatom.a.neighbors.forEach((neighbor) => {\n\t\t\tconst neiId = this.molecule.halfBonds.get(neighbor).end;\n\t\t\tif (!ids.has(neiId))\n\t\t\t\tlist.push(neiId);\n\t\t});\n\t}\n\n\treturn ids;\n};\n\n/**\n * @param idSet { Pile }\n * @returns { number }\n */\nReStruct.prototype.addConnectedComponent = function (idSet) {\n\tconst compId = this.connectedComponents.add(idSet);\n\tconst adjacentComponents = new Pile();\n\tconst aidSet = this.getConnectedComponent(Array.from(idSet), adjacentComponents);\n\n\tadjacentComponents.delete(compId);\n\n\tlet type = -1;\n\taidSet.forEach((aid) => {\n\t\tconst atom = this.atoms.get(aid);\n\t\tatom.component = compId;\n\t\tif (atom.a.rxnFragmentType !== -1)\n\t\t\ttype = atom.a.rxnFragmentType;\n\t});\n\n\tthis.ccFragmentType.set(compId, type);\n\treturn compId;\n};\n\n/**\n * @param ccid { number }\n * @returns { number }\n */\nReStruct.prototype.removeConnectedComponent = function (ccid) {\n\tthis.connectedComponents.get(ccid).forEach((aid) => {\n\t\tthis.atoms.get(aid).component = -1;\n\t});\n\n\treturn this.connectedComponents.delete(ccid);\n};\n\nReStruct.prototype.assignConnectedComponents = function () {\n\tthis.atoms.forEach((atom, aid) => {\n\t\tif (atom.component >= 0)\n\t\t\treturn;\n\n\t\tconst adjacentComponents = new Pile();\n\t\tconst idSet = this.getConnectedComponent(aid, adjacentComponents);\n\t\tadjacentComponents.forEach((ccid) => {\n\t\t\tthis.removeConnectedComponent(ccid);\n\t\t});\n\n\t\tthis.addConnectedComponent(idSet);\n\t});\n};\n\nReStruct.prototype.initLayers = function () {\n\tfor (const group in LAYER_MAP) {\n\t\tthis.layers[LAYER_MAP[group]] =\n\t\t\tthis.render.paper.rect(0, 0, 10, 10)\n\t\t\t\t.attr({\n\t\t\t\t\tclass: group + 'Layer',\n\t\t\t\t\tfill: '#000',\n\t\t\t\t\topacity: '0.0'\n\t\t\t\t})\n\t\t\t\t.toFront();\n\t}\n};\n\nReStruct.prototype.addReObjectPath = function (group, visel, path, pos, visible) { // eslint-disable-line max-params\n\tif (!path || !this.layers[LAYER_MAP[group]].node.parentNode)\n\t\treturn;\n\n\tconst offset = this.render.options.offset;\n\tlet bb = visible ? Box2Abs.fromRelBox(util.relBox(path.getBBox())) : null;\n\tconst ext = pos && bb ? bb.translate(pos.negated()) : null;\n\tif (offset !== null) {\n\t\tpath.translateAbs(offset.x, offset.y);\n\t\tbb = bb ? bb.translate(offset) : null;\n\t}\n\tvisel.add(path, bb, ext);\n\tpath.insertBefore(this.layers[LAYER_MAP[group]]);\n};\n\nReStruct.prototype.clearMarks = function () {\n\tObject.keys(ReStruct.maps).forEach((map) => {\n\t\tthis[map + 'Changed'] = new Map();\n\t});\n\n\tthis.structChanged = false;\n};\n\nReStruct.prototype.markItemRemoved = function () {\n\tthis.structChanged = true;\n};\n\nReStruct.prototype.markBond = function (bid, mark) {\n\tthis.markItem('bonds', bid, mark);\n};\n\nReStruct.prototype.markAtom = function (aid, mark) {\n\tthis.markItem('atoms', aid, mark);\n};\n\nReStruct.prototype.markItem = function (map, id, mark) {\n\tconst mapChanged = this[map + 'Changed'];\n\n\tconst value = mapChanged.has(id) ?\n\t\tMath.max(mark, mapChanged.get(id)) :\n\t\tmark;\n\n\tmapChanged.set(id, value);\n\n\tif (this[map].has(id))\n\t\tthis.clearVisel(this[map].get(id).visel);\n};\n\nReStruct.prototype.clearVisel = function (visel) {\n\tvisel.paths.forEach((path) => {\n\t\tpath.remove();\n\t});\n\tvisel.clear();\n};\n\nReStruct.prototype.eachItem = function (func) {\n\tObject.keys(ReStruct.maps).forEach((map) => {\n\t\tthis[map].forEach(func);\n\t});\n};\n\nReStruct.prototype.getVBoxObj = function (selection) {\n\tselection = selection || {};\n\n\tif (isSelectionEmpty(selection)) {\n\t\tObject.keys(ReStruct.maps).forEach((map) => {\n\t\t\tselection[map] = Array.from(this[map].keys());\n\t\t});\n\t}\n\n\tlet vbox = null;\n\tObject.keys(ReStruct.maps).forEach((map) => {\n\t\tif (!selection[map])\n\t\t\treturn;\n\n\t\tselection[map].forEach((id) => {\n\t\t\tconst box = this[map].get(id).getVBoxObj(this.render);\n\t\t\tif (box)\n\t\t\t\tvbox = vbox ? Box2Abs.union(vbox, box) : box.clone();\n\t\t});\n\t});\n\n\tvbox = vbox || new Box2Abs(0, 0, 0, 0);\n\treturn vbox;\n};\n\nfunction isSelectionEmpty(selection) {\n\tif (!selection)\n\t\treturn true;\n\n\tconst anySelection = Object.keys(ReStruct.maps)\n\t\t.some(map => selection[map] && selection[map].length > 0);\n\n\treturn !anySelection;\n}\n\nReStruct.prototype.translate = function (d) {\n\tthis.eachItem(item => item.visel.translate(d));\n};\n\nReStruct.prototype.scale = function (s) {\n\t// NOTE: bounding boxes are not valid after scaling\n\tthis.eachItem(item => scaleVisel(item.visel, s));\n};\n\nfunction scaleRPath(path, s) {\n\tif (path.type == 'set') { // TODO: rework scaling\n\t\tfor (var i = 0; i < path.length; ++i)\n\t\t\tscaleRPath(path[i], s);\n\t} else {\n\t\tif (!(typeof path.attrs === 'undefined')) {\n\t\t\tif ('font-size' in path.attrs)\n\t\t\t\tpath.attr('font-size', path.attrs['font-size'] * s);\n\t\t\telse if ('stroke-width' in path.attrs)\n\t\t\t\tpath.attr('stroke-width', path.attrs['stroke-width'] * s);\n\t\t}\n\t\tpath.scale(s, s, 0, 0);\n\t}\n}\n\nfunction scaleVisel(visel, s) {\n\tfor (let i = 0; i < visel.paths.length; ++i)\n\t\tscaleRPath(visel.paths[i], s);\n}\n\nReStruct.prototype.clearVisels = function () {\n\tthis.eachItem(item => this.clearVisel(item.visel));\n};\n\nReStruct.prototype.update = function (force) { // eslint-disable-line max-statements\n\tforce = force || !this.initialized;\n\n\t// check items to update\n\tObject.keys(ReStruct.maps).forEach((map) => {\n\t\tconst mapChanged = this[map + 'Changed'];\n\n\t\tif (force) {\n\t\t\tthis[map].forEach((item, id) => mapChanged.set(id, 1));\n\t\t} else {\n\t\t\t// check if some of the items marked are already gone\n\t\t\tmapChanged.forEach((value, id) => {\n\t\t\t\tif (!this[map].has(id))\n\t\t\t\t\tmapChanged.delete(id);\n\t\t\t});\n\t\t}\n\t});\n\n\tthis.atomsChanged.forEach((value, aid) => this.connectedComponentRemoveAtom(aid));\n\n\t// clean up empty fragments\n\t// TODO: fragment removal should be triggered by the action responsible for the fragment contents removal and form an operation of its own\n\tconst emptyFrags = this.frags\n\t\t.filter((fid, frag) => !frag.calcBBox(this.render.ctab, fid, this.render));\n\n\temptyFrags.forEach((frag, fid) => {\n\t\tthis.clearVisel(frag.visel);\n\t\tthis.frags.delete(fid);\n\t\tthis.molecule.frags.delete(fid);\n\t});\n\n\tObject.keys(ReStruct.maps).forEach((map) => {\n\t\tconst mapChanged = this[map + 'Changed'];\n\n\t\tmapChanged.forEach((value, id) => {\n\t\t\tthis.clearVisel(this[map].get(id).visel);\n\t\t\tthis.structChanged |= mapChanged.get(id) > 0;\n\t\t});\n\t});\n\n\t// TODO: when to update sgroup?\n\tthis.sgroups.forEach((sgroup) => {\n\t\tthis.clearVisel(sgroup.visel);\n\t\tsgroup.highlighting = null;\n\t\tsgroup.selectionPlate = null;\n\t});\n\n\t// TODO [RB] need to implement update-on-demand for fragments and r-groups\n\tthis.frags.forEach((frag) => {\n\t\tthis.clearVisel(frag.visel);\n\t});\n\n\tthis.rgroups.forEach((rgroup) => {\n\t\tthis.clearVisel(rgroup.visel);\n\t});\n\n\tif (force) { // clear and recreate all half-bonds\n\t\tthis.clearConnectedComponents();\n\t\tthis.molecule.initHalfBonds();\n\t\tthis.molecule.initNeighbors();\n\t}\n\n\t// only update half-bonds adjacent to atoms that have moved\n\tconst atomsChangedArray = Array.from(this.atomsChanged.keys());\n\tthis.molecule.updateHalfBonds(atomsChangedArray);\n\tthis.molecule.sortNeighbors(atomsChangedArray);\n\n\tthis.assignConnectedComponents();\n\tthis.initialized = true;\n\n\tthis.verifyLoops();\n\tconst updLoops = force || this.structChanged;\n\tif (updLoops)\n\t\tthis.updateLoops();\n\tthis.setImplicitHydrogen();\n\tthis.showLabels();\n\tthis.showBonds();\n\tif (updLoops)\n\t\tthis.showLoops();\n\tthis.showReactionSymbols();\n\tthis.showSGroups();\n\n\tthis.showFragments();\n\tthis.showRGroups();\n\tthis.showChiralFlags();\n\tthis.clearMarks();\n\treturn true;\n};\n\nReStruct.prototype.updateLoops = function () {\n\tthis.reloops.forEach((reloop) => {\n\t\tthis.clearVisel(reloop.visel);\n\t});\n\tconst ret = this.molecule.findLoops();\n\tret.bondsToMark.forEach((bid) => {\n\t\tthis.markBond(bid, 1);\n\t});\n\tret.newLoops.forEach((loopId) => {\n\t\tthis.reloops.set(loopId, new ReLoop(this.molecule.loops.get(loopId)));\n\t});\n};\n\nReStruct.prototype.showLoops = function () {\n\tconst options = this.render.options;\n\tthis.reloops.forEach((reloop, rlid) => {\n\t\treloop.show(this, rlid, options);\n\t});\n};\n\nReStruct.prototype.showReactionSymbols = function () {\n\tconst options = this.render.options;\n\n\tthis.rxnArrowsChanged.forEach((value, id) => {\n\t\tconst arrow = this.rxnArrows.get(id);\n\t\tarrow.show(this, id, options);\n\t});\n\n\tthis.rxnPlusesChanged.forEach((value, id) => {\n\t\tconst plus = this.rxnPluses.get(id);\n\t\tplus.show(this, id, options);\n\t});\n};\n\nReStruct.prototype.showSGroups = function () {\n\tconst options = this.render.options;\n\n\tthis.molecule.sGroupForest.getSGroupsBFS().reverse().forEach((id) => {\n\t\tconst resgroup = this.sgroups.get(id);\n\t\tresgroup.show(this, id, options);\n\t});\n};\n\nReStruct.prototype.showFragments = function () {\n\tthis.frags.forEach((frag, id) => {\n\t\tconst path = frag.draw(this.render, id);\n\t\tif (path)\n\t\t\tthis.addReObjectPath('data', frag.visel, path, null, true);\n\t\t// TODO fragment selection & highlighting\n\t});\n};\n\nReStruct.prototype.showRGroups = function () {\n\tconst options = this.render.options;\n\tthis.rgroups.forEach((rgroup, id) => {\n\t\trgroup.show(this, id, options);\n\t});\n};\n\nReStruct.prototype.setImplicitHydrogen = function () {\n\t// calculate implicit hydrogens for atoms that have been modified\n\tthis.molecule.setImplicitHydrogen(Array.from(this.atomsChanged.keys()));\n};\n\nReStruct.prototype.loopRemove = function (loopId) {\n\tif (!this.reloops.has(loopId))\n\t\treturn;\n\n\tconst reloop = this.reloops.get(loopId);\n\tthis.clearVisel(reloop.visel);\n\n\tconst bondlist = [];\n\n\treloop.loop.hbs.forEach((hbid) => {\n\t\tif (!this.molecule.halfBonds.has(hbid))\n\t\t\treturn;\n\n\t\tconst hb = this.molecule.halfBonds.get(hbid);\n\t\thb.loop = -1;\n\t\tthis.markBond(hb.bid, 1);\n\t\tthis.markAtom(hb.begin, 1);\n\t\tbondlist.push(hb.bid);\n\t});\n\n\tthis.reloops.delete(loopId);\n\tthis.molecule.loops.delete(loopId);\n};\n\nReStruct.prototype.verifyLoops = function () {\n\tthis.reloops.forEach((reloop, rlid) => {\n\t\tif (!reloop.isValid(this.molecule, rlid))\n\t\t\tthis.loopRemove(rlid);\n\t});\n};\n\nReStruct.prototype.showLabels = function () { // eslint-disable-line max-statements\n\tconst options = this.render.options;\n\n\tthis.atomsChanged.forEach((value, aid) => {\n\t\tconst atom = this.atoms.get(aid);\n\t\tatom.show(this, aid, options);\n\t});\n};\n\nReStruct.prototype.showChiralFlags = function () { // eslint-disable-line max-statements\n\tconst options = this.render.options;\n\n\tif (this.render.options.hideChiralFlag !== true) {\n\t\tthis.chiralFlagsChanged.forEach((value, chid) => {\n\t\t\tconst flag = this.chiralFlags.get(chid);\n\t\t\tflag.show(this, chid, options);\n\t\t});\n\t}\n};\n\nReStruct.prototype.showBonds = function () { // eslint-disable-line max-statements\n\tconst options = this.render.options;\n\n\tthis.bondsChanged.forEach((value, bid) => {\n\t\tconst bond = this.bonds.get(bid);\n\t\tbond.show(this, bid, options);\n\t});\n};\n\nReStruct.prototype.setSelection = function (selection) {\n\tconst redraw = arguments.length === 0; // render.update only\n\n\tObject.keys(ReStruct.maps).forEach((map) => {\n\t\tif (ReStruct.maps[map].isSelectable()) {\n\t\t\tthis[map].forEach((item, id) => {\n\t\t\t\tconst selected = redraw ?\n\t\t\t\t\titem.selected :\n\t\t\t\t\tselection && selection[map] && selection[map].indexOf(id) > -1;\n\n\t\t\t\tthis.showItemSelection(item, selected);\n\t\t\t});\n\t\t}\n\t});\n};\n\nReStruct.prototype.showItemSelection = function (item, selected) {\n\tvar exists = item.selectionPlate !== null && !item.selectionPlate.removed;\n\t// TODO: simplify me, who sets `removed`?\n\titem.selected = selected;\n\tif (item instanceof ReDataSGroupData) item.sgroup.selected = selected;\n\tif (selected) {\n\t\tif (!exists) {\n\t\t\tvar render = this.render;\n\t\t\tvar options = render.options;\n\t\t\tvar paper = render.paper;\n\n\t\t\titem.selectionPlate = item.makeSelectionPlate(this, paper, options);\n\t\t\tthis.addReObjectPath('selectionPlate', item.visel, item.selectionPlate);\n\t\t}\n\t\tif (item.selectionPlate)\n\t\t\titem.selectionPlate.show(); // TODO [RB] review\n\t} else if (exists && item.selectionPlate) {\n\t\titem.selectionPlate.hide(); // TODO [RB] review\n\t}\n};\n\nReStruct.maps = {\n\tatoms: ReAtom,\n\tbonds: ReBond,\n\trxnPluses: ReRxnPlus,\n\trxnArrows: ReRxnArrow,\n\tfrags: ReFrag,\n\trgroups: ReRGroup,\n\tsgroupData: ReDataSGroupData,\n\tchiralFlags: ReChiralFlag,\n\tsgroups: ReSGroup,\n\treloops: ReLoop\n};\n\nexport default ReStruct;\nexport {\n\tReAtom,\n\tReBond,\n\tReRxnPlus,\n\tReRxnArrow,\n\tReFrag,\n\tReRGroup,\n\tReChiralFlag,\n\tReSGroup\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Box2Abs from '../../util/box2abs';\nimport ReObject from './reobject';\nimport scale from '../../util/scale';\nimport element from '../../chem/element';\nimport { sketchingColors as elementColor } from '../../chem/element-color';\nimport draw from '../draw';\nimport util from '../util';\nimport Vec2 from '../../util/vec2';\nimport { Bond } from '../../chem/struct';\n\nfunction ReAtom(/* chem.Atom*/atom) {\n\tthis.init('atom');\n\n\tthis.a = atom; // TODO rename a to item\n\tthis.showLabel = false;\n\n\tthis.hydrogenOnTheLeft = false;\n\n\tthis.color = '#000000';\n\tthis.component = -1;\n}\n\nReAtom.prototype = new ReObject();\nReAtom.isSelectable = function () {\n\treturn true;\n};\n\nReAtom.prototype.getVBoxObj = function (render) {\n\tif (this.visel.boundingBox)\n\t\treturn ReObject.prototype.getVBoxObj.call(this, render);\n\treturn new Box2Abs(this.a.pp, this.a.pp);\n};\n\nReAtom.prototype.drawHighlight = function (render) {\n\tvar ret = this.makeHighlightPlate(render);\n\trender.ctab.addReObjectPath('highlighting', this.visel, ret);\n\treturn ret;\n};\n\nReAtom.prototype.makeHighlightPlate = function (render) {\n\tvar paper = render.paper;\n\tvar options = render.options;\n\tvar ps = scale.obj2scaled(this.a.pp, options);\n\treturn paper.circle(ps.x, ps.y, options.atomSelectionPlateRadius)\n\t\t.attr(options.highlightStyle);\n};\n\nReAtom.prototype.makeSelectionPlate = function (restruct, paper, styles) {\n\tvar ps = scale.obj2scaled(this.a.pp, restruct.render.options);\n\treturn paper.circle(ps.x, ps.y, styles.atomSelectionPlateRadius)\n\t\t.attr(styles.selectionStyle);\n};\n\nReAtom.prototype.show = function (restruct, aid, options) { // eslint-disable-line max-statements\n\tconst render = restruct.render;\n\tconst ps = scale.obj2scaled(this.a.pp, render.options);\n\n\tthis.hydrogenOnTheLeft = setHydrogenPos(restruct.molecule, this);\n\tthis.showLabel = isLabelVisible(restruct, render.options, this);\n\tthis.color = 'black'; // reset colour\n\tif (this.showLabel) {\n\t\tvar label = buildLabel(this, render.paper, ps, options);\n\t\tvar delta = 0.5 * options.lineWidth;\n\t\tvar rightMargin = label.rbb.width / 2;\n\t\tvar leftMargin = -label.rbb.width / 2;\n\t\tvar implh = Math.floor(this.a.implicitH);\n\t\tvar isHydrogen = label.text === 'H';\n\t\trestruct.addReObjectPath('data', this.visel, label.path, ps, true);\n\n\t\tvar index = null;\n\t\tif (options.showAtomIds) {\n\t\t\tindex = {};\n\t\t\tindex.text = aid.toString();\n\t\t\tindex.path = render.paper.text(ps.x, ps.y, index.text)\n\t\t\t\t.attr({\n\t\t\t\t\tfont: options.font,\n\t\t\t\t\t'font-size': options.fontszsub,\n\t\t\t\t\tfill: '#070'\n\t\t\t\t});\n\t\t\tindex.rbb = util.relBox(index.path.getBBox());\n\t\t\tdraw.recenterText(index.path, index.rbb);\n\t\t\trestruct.addReObjectPath('indices', this.visel, index.path, ps);\n\t\t}\n\t\tthis.setHighlight(this.highlight, render);\n\t}\n\n\tif (this.showLabel && !this.a.alias && !this.a.pseudo) {\n\t\tvar hydroIndex = null;\n\t\tif (isHydrogen && implh > 0) {\n\t\t\thydroIndex = showHydroIndex(this, render, implh, rightMargin);\n\t\t\trightMargin += hydroIndex.rbb.width + delta;\n\t\t\trestruct.addReObjectPath('data', this.visel, hydroIndex.path, ps, true);\n\t\t}\n\n\t\tif (this.a.radical != 0) {\n\t\t\tvar radical = showRadical(this, render);\n\t\t\trestruct.addReObjectPath('data', this.visel, radical.path, ps, true);\n\t\t}\n\t\tif (this.a.isotope != 0) {\n\t\t\tvar isotope = showIsotope(this, render, leftMargin);\n\t\t\tleftMargin -= isotope.rbb.width + delta;\n\t\t\trestruct.addReObjectPath('data', this.visel, isotope.path, ps, true);\n\t\t}\n\t\tif (!isHydrogen && implh > 0 && displayHydrogen(options.showHydrogenLabels, this)) {\n\t\t\tvar data = showHydrogen(this, render, implh, {\n\t\t\t\thydrogen: {},\n\t\t\t\thydroIndex,\n\t\t\t\trightMargin,\n\t\t\t\tleftMargin\n\t\t\t});\n\t\t\tvar hydrogen = data.hydrogen;\n\t\t\thydroIndex = data.hydroIndex;\n\t\t\trightMargin = data.rightMargin;\n\t\t\tleftMargin = data.leftMargin;\n\t\t\trestruct.addReObjectPath('data', this.visel, hydrogen.path, ps, true);\n\t\t\tif (hydroIndex != null)\n\t\t\t\trestruct.addReObjectPath('data', this.visel, hydroIndex.path, ps, true);\n\t\t}\n\n\t\tif (this.a.charge != 0 && options.showCharge) {\n\t\t\tvar charge = showCharge(this, render, rightMargin);\n\t\t\trightMargin += charge.rbb.width + delta;\n\t\t\trestruct.addReObjectPath('data', this.visel, charge.path, ps, true);\n\t\t}\n\t\tif (this.a.explicitValence >= 0 && options.showValence) {\n\t\t\tvar valence = showExplicitValence(this, render, rightMargin);\n\t\t\trightMargin += valence.rbb.width + delta;\n\t\t\trestruct.addReObjectPath('data', this.visel, valence.path, ps, true);\n\t\t}\n\n\t\tif (this.a.badConn && options.showValenceWarnings) {\n\t\t\tvar warning = showWarning(this, render, leftMargin, rightMargin);\n\t\t\trestruct.addReObjectPath('warnings', this.visel, warning.path, ps, true);\n\t\t}\n\t\tif (index) {\n\t\t\t/* eslint-disable no-mixed-operators */\n\t\t\tpathAndRBoxTranslate(index.path, index.rbb,\n\t\t\t\t-0.5 * label.rbb.width - 0.5 * index.rbb.width - delta,\n\t\t\t\t0.3 * label.rbb.height);\n\t\t\t/* eslint-enable no-mixed-operators */\n\t\t}\n\t}\n\n\tif (this.a.attpnt) {\n\t\tconst lsb = bisectLargestSector(this, restruct.molecule);\n\t\tshowAttpnt(this, render, lsb, restruct.addReObjectPath.bind(restruct));\n\t}\n\n\tlet aamText = getAamText(this);\n\tconst queryAttrsText = (!this.a.alias && !this.a.pseudo) ? getQueryAttrsText(this) : '';\n\n\t// this includes both aam flags, if any, and query features, if any\n\t// we render them together to avoid possible collisions\n\taamText = (queryAttrsText.length > 0 ? queryAttrsText + '\\n' : '') + (aamText.length > 0 ? '.' + aamText + '.' : '');\n\tif (aamText.length > 0) {\n\t\tvar elem = element.map[this.a.label];\n\t\tvar aamPath = render.paper.text(ps.x, ps.y, aamText).attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontszsub,\n\t\t\tfill: (options.atomColoring && elem) ? elementColor[this.a.label] : '#000'\n\t\t});\n\t\tvar aamBox = util.relBox(aamPath.getBBox());\n\t\tdraw.recenterText(aamPath, aamBox);\n\t\tvar dir = bisectLargestSector(this, restruct.molecule);\n\t\tvar visel = this.visel;\n\t\tvar t = 3;\n\t\t// estimate the shift to clear the atom label\n\t\tfor (var i = 0; i < visel.exts.length; ++i)\n\t\t\tt = Math.max(t, util.shiftRayBox(ps, dir, visel.exts[i].translate(ps)));\n\t\t// estimate the shift backwards to account for the size of the aam/query text box itself\n\t\tt += util.shiftRayBox(ps, dir.negated(), Box2Abs.fromRelBox(aamBox));\n\t\tdir = dir.scaled(8 + t);\n\t\tpathAndRBoxTranslate(aamPath, aamBox, dir.x, dir.y);\n\t\trestruct.addReObjectPath('data', this.visel, aamPath, ps, true);\n\t}\n};\n\nfunction isLabelVisible(restruct, options, atom) {\n\tconst visibleTerminal = options.showHydrogenLabels !== 'off' &&\n\t\toptions.showHydrogenLabels !== 'Hetero';\n\n\tconst neighborsLength = atom.a.neighbors.length === 0 || (atom.a.neighbors.length < 2 && visibleTerminal);\n\n\tconst shouldBeVisible =\n\t\tneighborsLength ||\n\t\toptions.carbonExplicitly ||\n\t\tatom.a.alias ||\n\t\tatom.a.isotope !== 0 ||\n\t\tatom.a.radical !== 0 ||\n\t\tatom.a.charge !== 0 ||\n\t\tatom.a.explicitValence >= 0 ||\n\t\tatom.a.atomList !== null ||\n\t\tatom.a.rglabel !== null ||\n\t\tatom.a.badConn && options.showValenceWarnings ||\n\t\tatom.a.label.toLowerCase() !== 'c';\n\n\tif (shouldBeVisible)\n\t\treturn true;\n\n\tif (atom.a.neighbors.length === 2) {\n\t\tconst nei1 = atom.a.neighbors[0];\n\t\tconst nei2 = atom.a.neighbors[1];\n\t\tconst hb1 = restruct.molecule.halfBonds.get(nei1);\n\t\tconst hb2 = restruct.molecule.halfBonds.get(nei2);\n\t\tconst bond1 = restruct.bonds.get(hb1.bid);\n\t\tconst bond2 = restruct.bonds.get(hb2.bid);\n\n\t\tconst sameNotStereo = bond1.b.type === bond2.b.type &&\n\t\t\tbond1.b.stereo === Bond.PATTERN.STEREO.NONE &&\n\t\t\tbond2.b.stereo === Bond.PATTERN.STEREO.NONE;\n\n\t\tif (sameNotStereo && Math.abs(Vec2.cross(hb1.dir, hb2.dir)) < 0.2)\n\t\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction displayHydrogen(hydrogenLabels, atom) {\n\treturn (\n\t\t(hydrogenLabels === 'on') ||\n\t\t(hydrogenLabels === 'Terminal' && atom.a.neighbors.length < 2) ||\n\t\t(hydrogenLabels === 'Hetero' && atom.label.text.toLowerCase() !== 'c') ||\n\t\t(hydrogenLabels === 'Terminal and Hetero' && (atom.a.neighbors.length < 2 || atom.label.text.toLowerCase() !== 'c'))\n\t);\n}\n\nfunction setHydrogenPos(struct, atom) {\n\t// check where should the hydrogen be put on the left of the label\n\tif (atom.a.neighbors.length === 0) {\n\t\tconst elem = element.map[atom.a.label];\n\t\treturn !elem || element[elem].leftH;\n\t}\n\n\tlet yl = 1;\n\tlet yr = 1;\n\tlet nl = 0;\n\tlet nr = 0;\n\n\tatom.a.neighbors.forEach((nei) => {\n\t\tconst d = struct.halfBonds.get(nei).dir;\n\n\t\tif (d.x <= 0) {\n\t\t\tyl = Math.min(yl, Math.abs(d.y));\n\t\t\tnl++;\n\t\t} else {\n\t\t\tyr = Math.min(yr, Math.abs(d.y));\n\t\t\tnr++;\n\t\t}\n\t});\n\n\treturn (yl < 0.51 || yr < 0.51) ? yr < yl : nr > nl;\n}\n\nfunction buildLabel(atom, paper, ps, options) { // eslint-disable-line max-statements\n\tlet label = {};\n\tlabel.text = getLabelText(atom.a);\n\n\tif (label.text === '')\n\t\tlabel = 'R#'; // for structures that missed 'M RGP' tag in molfile\n\n\tif (label.text === atom.a.label) {\n\t\tconst elem = element.map[label.text];\n\t\tif (options.atomColoring && elem)\n\t\t\tatom.color = elementColor[label.text] || '#000';\n\t}\n\n\tlabel.path = paper.text(ps.x, ps.y, label.text)\n\t\t.attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontsz,\n\t\t\tfill: atom.color,\n\t\t\t'font-style': atom.a.pseudo ? 'italic' : ''\n\t\t});\n\n\tlabel.rbb = util.relBox(label.path.getBBox());\n\tdraw.recenterText(label.path, label.rbb);\n\n\tif (atom.a.atomList !== null)\n\t\tpathAndRBoxTranslate(label.path, label.rbb, (atom.hydrogenOnTheLeft ? -1 : 1) * (label.rbb.width - label.rbb.height) / 2, 0);\n\n\tatom.label = label;\n\treturn label;\n}\n\nfunction getLabelText(atom) {\n\tif (atom.atomList !== null)\n\t\treturn atom.atomList.label();\n\n\tif (atom.pseudo)\n\t\treturn atom.pseudo;\n\n\tif (atom.alias)\n\t\treturn atom.alias;\n\n\tif (atom.label === 'R#' && atom.rglabel !== null) {\n\t\tlet text = '';\n\n\t\tfor (let rgi = 0; rgi < 32; rgi++) {\n\t\t\tif (atom.rglabel & (1 << rgi)) // eslint-disable-line max-depth\n\t\t\t\ttext += ('R' + (rgi + 1).toString());\n\t\t}\n\n\t\treturn text;\n\t}\n\n\treturn atom.label;\n}\n\nfunction showHydroIndex(atom, render, implh, rightMargin) {\n\tvar ps = scale.obj2scaled(atom.a.pp, render.options);\n\tvar options = render.options;\n\tvar delta = 0.5 * options.lineWidth;\n\tvar hydroIndex = {};\n\thydroIndex.text = (implh + 1).toString();\n\thydroIndex.path =\n\t\trender.paper.text(ps.x, ps.y, hydroIndex.text)\n\t\t\t.attr({\n\t\t\t\tfont: options.font,\n\t\t\t\t'font-size': options.fontszsub,\n\t\t\t\tfill: atom.color\n\t\t\t});\n\thydroIndex.rbb = util.relBox(hydroIndex.path.getBBox());\n\tdraw.recenterText(hydroIndex.path, hydroIndex.rbb);\n\t/* eslint-disable no-mixed-operators*/\n\tpathAndRBoxTranslate(hydroIndex.path, hydroIndex.rbb,\n\t\trightMargin + 0.5 * hydroIndex.rbb.width + delta,\n\t\t0.2 * atom.label.rbb.height);\n\t/* eslint-enable no-mixed-operators*/\n\treturn hydroIndex;\n}\n\nfunction showRadical(atom, render) {\n\tvar ps = scale.obj2scaled(atom.a.pp, render.options);\n\tvar options = render.options;\n\tvar paper = render.paper;\n\tvar radical = {};\n\tvar hshift;\n\tswitch (atom.a.radical) {\n\tcase 1:\n\t\tradical.path = paper.set();\n\t\thshift = 1.6 * options.lineWidth;\n\t\tradical.path.push(\n\t\t\tdraw.radicalBullet(paper, ps.add(new Vec2(-hshift, 0)), options),\n\t\t\tdraw.radicalBullet(paper, ps.add(new Vec2(hshift, 0)), options)\n\t\t);\n\t\tradical.path.attr('fill', atom.color);\n\t\tbreak;\n\tcase 2:\n\t\tradical.path = paper.set();\n\t\tradical.path.push(\n\t\t\tdraw.radicalBullet(paper, ps, options)\n\t\t);\n\t\tradical.path.attr('fill', atom.color);\n\t\tbreak;\n\tcase 3:\n\t\tradical.path = paper.set();\n\t\thshift = 1.6 * options.lineWidth;\n\t\tradical.path.push(\n\t\t\tdraw.radicalCap(paper, ps.add(new Vec2(-hshift, 0)), options),\n\t\t\tdraw.radicalCap(paper, ps.add(new Vec2(hshift, 0)), options)\n\t\t);\n\t\tradical.path.attr('stroke', atom.color);\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\tradical.rbb = util.relBox(radical.path.getBBox());\n\tvar vshift = -0.5 * (atom.label.rbb.height + radical.rbb.height);\n\tif (atom.a.radical === 3)\n\t\tvshift -= options.lineWidth / 2;\n\tpathAndRBoxTranslate(radical.path, radical.rbb,\n\t\t0, vshift);\n\treturn radical;\n}\n\nfunction showIsotope(atom, render, leftMargin) {\n\tvar ps = scale.obj2scaled(atom.a.pp, render.options);\n\tvar options = render.options;\n\tvar delta = 0.5 * options.lineWidth;\n\tvar isotope = {};\n\tisotope.text = atom.a.isotope.toString();\n\tisotope.path = render.paper.text(ps.x, ps.y, isotope.text)\n\t\t.attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontszsub,\n\t\t\tfill: atom.color\n\t\t});\n\tisotope.rbb = util.relBox(isotope.path.getBBox());\n\tdraw.recenterText(isotope.path, isotope.rbb);\n\t/* eslint-disable no-mixed-operators*/\n\tpathAndRBoxTranslate(isotope.path, isotope.rbb,\n\t\tleftMargin - 0.5 * isotope.rbb.width - delta,\n\t\t-0.3 * atom.label.rbb.height);\n\t/* eslint-enable no-mixed-operators*/\n\treturn isotope;\n}\n\nfunction showCharge(atom, render, rightMargin) {\n\tvar ps = scale.obj2scaled(atom.a.pp, render.options);\n\tvar options = render.options;\n\tvar delta = 0.5 * options.lineWidth;\n\tvar charge = {};\n\tcharge.text = '';\n\tvar absCharge = Math.abs(atom.a.charge);\n\tif (absCharge != 1)\n\t\tcharge.text = absCharge.toString();\n\tif (atom.a.charge < 0)\n\t\tcharge.text += '\\u2013';\n\telse\n\t\tcharge.text += '+';\n\n\tcharge.path = render.paper.text(ps.x, ps.y, charge.text)\n\t\t.attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontszsub,\n\t\t\tfill: atom.color\n\t\t});\n\tcharge.rbb = util.relBox(charge.path.getBBox());\n\tdraw.recenterText(charge.path, charge.rbb);\n\t/* eslint-disable no-mixed-operators*/\n\tpathAndRBoxTranslate(charge.path, charge.rbb,\n\t\trightMargin + 0.5 * charge.rbb.width + delta,\n\t\t-0.3 * atom.label.rbb.height);\n\t/* eslint-enable no-mixed-operators*/\n\treturn charge;\n}\n\nfunction showExplicitValence(atom, render, rightMargin) {\n\tvar mapValence = {\n\t\t0: '0',\n\t\t1: 'I',\n\t\t2: 'II',\n\t\t3: 'III',\n\t\t4: 'IV',\n\t\t5: 'V',\n\t\t6: 'VI',\n\t\t7: 'VII',\n\t\t8: 'VIII',\n\t\t9: 'IX',\n\t\t10: 'X',\n\t\t11: 'XI',\n\t\t12: 'XII',\n\t\t13: 'XIII',\n\t\t14: 'XIV'\n\t};\n\tvar ps = scale.obj2scaled(atom.a.pp, render.options);\n\tvar options = render.options;\n\tvar delta = 0.5 * options.lineWidth;\n\tvar valence = {};\n\tvalence.text = mapValence[atom.a.explicitValence];\n\tif (!valence.text)\n\t\tthrow new Error('invalid valence ' + atom.a.explicitValence.toString());\n\tvalence.text = '(' + valence.text + ')';\n\tvalence.path = render.paper.text(ps.x, ps.y, valence.text)\n\t\t.attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontszsub,\n\t\t\tfill: atom.color\n\t\t});\n\tvalence.rbb = util.relBox(valence.path.getBBox());\n\tdraw.recenterText(valence.path, valence.rbb);\n\t/* eslint-disable no-mixed-operators*/\n\tpathAndRBoxTranslate(valence.path, valence.rbb,\n\t\trightMargin + 0.5 * valence.rbb.width + delta,\n\t\t-0.3 * atom.label.rbb.height);\n\t/* eslint-enable no-mixed-operators*/\n\treturn valence;\n}\n\nfunction showHydrogen(atom, render, implh, data) { // eslint-disable-line max-statements\n\tvar hydroIndex = data.hydroIndex;\n\tvar hydrogenLeft = atom.hydrogenOnTheLeft;\n\tvar ps = scale.obj2scaled(atom.a.pp, render.options);\n\tvar options = render.options;\n\tvar delta = 0.5 * options.lineWidth;\n\tvar hydrogen = data.hydrogen;\n\thydrogen.text = 'H';\n\thydrogen.path = render.paper.text(ps.x, ps.y, hydrogen.text).attr({\n\t\tfont: options.font,\n\t\t'font-size': options.fontsz,\n\t\tfill: atom.color\n\t});\n\thydrogen.rbb = util.relBox(hydrogen.path.getBBox());\n\tdraw.recenterText(hydrogen.path, hydrogen.rbb);\n\tif (!hydrogenLeft) {\n\t\tpathAndRBoxTranslate(hydrogen.path, hydrogen.rbb,\n\t\t\tdata.rightMargin + (0.5 * hydrogen.rbb.width) + delta, 0);\n\t\tdata.rightMargin += hydrogen.rbb.width + delta;\n\t}\n\tif (implh > 1) {\n\t\thydroIndex = {};\n\t\thydroIndex.text = implh.toString();\n\t\thydroIndex.path = render.paper.text(ps.x, ps.y, hydroIndex.text)\n\t\t\t.attr({\n\t\t\t\tfont: options.font,\n\t\t\t\t'font-size': options.fontszsub,\n\t\t\t\tfill: atom.color\n\t\t\t});\n\t\thydroIndex.rbb = util.relBox(hydroIndex.path.getBBox());\n\t\tdraw.recenterText(hydroIndex.path, hydroIndex.rbb);\n\t\tif (!hydrogenLeft) {\n\t\t\tpathAndRBoxTranslate(hydroIndex.path, hydroIndex.rbb,\n\t\t\t\tdata.rightMargin + (0.5 * hydroIndex.rbb.width) + delta,\n\t\t\t\t0.2 * atom.label.rbb.height);\n\t\t\tdata.rightMargin += hydroIndex.rbb.width + delta;\n\t\t}\n\t}\n\tif (hydrogenLeft) {\n\t\tif (hydroIndex != null) {\n\t\t\tpathAndRBoxTranslate(hydroIndex.path, hydroIndex.rbb,\n\t\t\t\tdata.leftMargin - (0.5 * hydroIndex.rbb.width) - delta,\n\t\t\t\t0.2 * atom.label.rbb.height);\n\t\t\tdata.leftMargin -= hydroIndex.rbb.width + delta;\n\t\t}\n\t\tpathAndRBoxTranslate(hydrogen.path, hydrogen.rbb,\n\t\t\tdata.leftMargin - (0.5 * hydrogen.rbb.width) - delta, 0);\n\t\tdata.leftMargin -= hydrogen.rbb.width + delta;\n\t}\n\treturn Object.assign(data, { hydrogen, hydroIndex });\n}\n\nfunction showWarning(atom, render, leftMargin, rightMargin) {\n\tvar ps = scale.obj2scaled(atom.a.pp, render.options);\n\tvar delta = 0.5 * render.options.lineWidth;\n\tvar tfx = util.tfx;\n\tvar warning = {};\n\tvar y = ps.y + (atom.label.rbb.height / 2) + delta;\n\twarning.path = render.paper.path('M{0},{1}L{2},{3}',\n\t\ttfx(ps.x + leftMargin), tfx(y), tfx(ps.x + rightMargin), tfx(y))\n\t\t.attr(render.options.lineattr).attr({ stroke: '#F00' });\n\twarning.rbb = util.relBox(warning.path.getBBox());\n\treturn warning;\n}\n\nfunction showAttpnt(atom, render, lsb, addReObjectPath) { // eslint-disable-line max-statements\n\tvar asterisk = '∗';\n\tvar ps = scale.obj2scaled(atom.a.pp, render.options);\n\tvar options = render.options;\n\tvar tfx = util.tfx;\n\tvar i,\n\t\tj;\n\tfor (i = 0; i < 4; ++i) {\n\t\tvar attpntText = '';\n\t\tif (atom.a.attpnt & (1 << i)) {\n\t\t\tif (attpntText.length > 0)\n\t\t\t\tattpntText += ' ';\n\t\t\tattpntText += asterisk;\n\t\t\tfor (j = 0; j < (i == 0 ? 0 : (i + 1)); ++j)\n\t\t\t\tattpntText += '\\'';\n\t\t\tvar pos0 = new Vec2(ps);\n\t\t\tvar pos1 = ps.addScaled(lsb, 0.7 * options.scale);\n\n\t\t\tvar attpntPath1 = render.paper.text(pos1.x, pos1.y, attpntText)\n\t\t\t\t.attr({\n\t\t\t\t\tfont: options.font,\n\t\t\t\t\t'font-size': options.fontsz,\n\t\t\t\t\tfill: atom.color\n\t\t\t\t});\n\t\t\tvar attpntRbb = util.relBox(attpntPath1.getBBox());\n\t\t\tdraw.recenterText(attpntPath1, attpntRbb);\n\n\t\t\tvar lsbn = lsb.negated();\n\t\t\t/* eslint-disable no-mixed-operators*/\n\t\t\tpos1 = pos1.addScaled(lsbn, util.shiftRayBox(pos1, lsbn, Box2Abs.fromRelBox(attpntRbb)) + options.lineWidth / 2);\n\t\t\t/* eslint-enable no-mixed-operators*/\n\t\t\tpos0 = shiftBondEnd(atom, pos0, lsb, options.lineWidth);\n\t\t\tvar n = lsb.rotateSC(1, 0);\n\t\t\tvar arrowLeft = pos1.addScaled(n, 0.05 * options.scale).addScaled(lsbn, 0.09 * options.scale);\n\t\t\tvar arrowRight = pos1.addScaled(n, -0.05 * options.scale).addScaled(lsbn, 0.09 * options.scale);\n\t\t\tvar attpntPath = render.paper.set();\n\t\t\tattpntPath.push(\n\t\t\t\tattpntPath1,\n\t\t\t\trender.paper.path('M{0},{1}L{2},{3}M{4},{5}L{2},{3}L{6},{7}', tfx(pos0.x), tfx(pos0.y), tfx(pos1.x), tfx(pos1.y), tfx(arrowLeft.x), tfx(arrowLeft.y), tfx(arrowRight.x), tfx(arrowRight.y))\n\t\t\t\t\t.attr(render.options.lineattr).attr({ 'stroke-width': options.lineWidth / 2 })\n\t\t\t);\n\t\t\taddReObjectPath('indices', atom.visel, attpntPath, ps);\n\t\t\tlsb = lsb.rotate(Math.PI / 6);\n\t\t}\n\t}\n}\n\nfunction getAamText(atom) {\n\tvar aamText = '';\n\tif (atom.a.aam > 0) aamText += atom.a.aam;\n\tif (atom.a.invRet > 0) {\n\t\tif (aamText.length > 0) aamText += ',';\n\t\tif (atom.a.invRet == 1) aamText += 'Inv';\n\t\telse if (atom.a.invRet == 2) aamText += 'Ret';\n\t\telse throw new Error('Invalid value for the invert/retain flag');\n\t}\n\tif (atom.a.exactChangeFlag > 0) {\n\t\tif (aamText.length > 0) aamText += ',';\n\t\tif (atom.a.exactChangeFlag == 1) aamText += 'ext';\n\t\telse throw new Error('Invalid value for the exact change flag');\n\t}\n\treturn aamText;\n}\n\nfunction getQueryAttrsText(atom) {\n\tvar queryAttrsText = '';\n\tif (atom.a.ringBondCount != 0) {\n\t\tif (atom.a.ringBondCount > 0) queryAttrsText += 'rb' + atom.a.ringBondCount.toString();\n\t\telse if (atom.a.ringBondCount == -1) queryAttrsText += 'rb0';\n\t\telse if (atom.a.ringBondCount == -2) queryAttrsText += 'rb*';\n\t\telse throw new Error('Ring bond count invalid');\n\t}\n\tif (atom.a.substitutionCount != 0) {\n\t\tif (queryAttrsText.length > 0) queryAttrsText += ',';\n\t\tif (atom.a.substitutionCount > 0) queryAttrsText += 's' + atom.a.substitutionCount.toString();\n\t\telse if (atom.a.substitutionCount == -1) queryAttrsText += 's0';\n\t\telse if (atom.a.substitutionCount == -2) queryAttrsText += 's*';\n\t\telse throw new Error('Substitution count invalid');\n\t}\n\tif (atom.a.unsaturatedAtom > 0) {\n\t\tif (queryAttrsText.length > 0) queryAttrsText += ',';\n\t\tif (atom.a.unsaturatedAtom == 1) queryAttrsText += 'u';\n\t\telse throw new Error('Unsaturated atom invalid value');\n\t}\n\tif (atom.a.hCount > 0) {\n\t\tif (queryAttrsText.length > 0) queryAttrsText += ',';\n\t\tqueryAttrsText += 'H' + (atom.a.hCount - 1).toString();\n\t}\n\treturn queryAttrsText;\n}\n\nfunction pathAndRBoxTranslate(path, rbb, x, y) {\n\tpath.translateAbs(x, y);\n\trbb.x += x;\n\trbb.y += y;\n}\n\nfunction bisectLargestSector(atom, struct) {\n\tvar angles = [];\n\tatom.a.neighbors.forEach((hbid) => {\n\t\tvar hb = struct.halfBonds.get(hbid);\n\t\tangles.push(hb.ang);\n\t});\n\tangles = angles.sort((a, b) => a - b);\n\tvar da = [];\n\tfor (var i = 0; i < angles.length - 1; ++i)\n\t\tda.push(angles[(i + 1) % angles.length] - angles[i]);\n\tda.push(angles[0] - angles[angles.length - 1] + (2 * Math.PI));\n\tvar daMax = 0;\n\tvar ang = -Math.PI / 2;\n\tfor (i = 0; i < angles.length; ++i) {\n\t\tif (da[i] > daMax) {\n\t\t\tdaMax = da[i];\n\t\t\tang = angles[i] + (da[i] / 2);\n\t\t}\n\t}\n\treturn new Vec2(Math.cos(ang), Math.sin(ang));\n}\n\nfunction shiftBondEnd(atom, pos0, dir, margin) {\n\tvar t = 0;\n\tvar visel = atom.visel;\n\tfor (var k = 0; k < visel.exts.length; ++k) {\n\t\tvar box = visel.exts[k].translate(pos0);\n\t\tt = Math.max(t, util.shiftRayBox(pos0, dir, box));\n\t}\n\tif (t > 0)\n\t\tpos0 = pos0.addScaled(dir, t + margin);\n\treturn pos0;\n}\n\nexport default ReAtom;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport ReObject from './reobject';\n\nimport { Bond } from '../../chem/struct';\nimport draw from '../draw';\nimport Vec2 from '../../util/vec2';\nimport util from '../util';\nimport scale from '../../util/scale';\n\n/**\n * @param bond { Bond }\n * @constructor\n */\nfunction ReBond(bond) {\n\tthis.init('bond');\n\n\tthis.b = bond; // TODO rename b to item\n\tthis.doubleBondShift = 0;\n}\n\nReBond.prototype = new ReObject();\nReBond.isSelectable = function () {\n\treturn true;\n};\n\nReBond.prototype.drawHighlight = function (render) {\n\tvar ret = this.makeHighlightPlate(render);\n\trender.ctab.addReObjectPath('highlighting', this.visel, ret);\n\treturn ret;\n};\n\nReBond.prototype.makeHighlightPlate = function (render) {\n\tvar options = render.options;\n\tbondRecalc(this, render.ctab, options);\n\tvar c = scale.obj2scaled(this.b.center, options);\n\treturn render.paper.circle(c.x, c.y, 0.8 * options.atomSelectionPlateRadius)\n\t\t.attr(options.highlightStyle);\n};\n\nReBond.prototype.makeSelectionPlate = function (restruct, paper, options) {\n\tbondRecalc(this, restruct, options);\n\tvar c = scale.obj2scaled(this.b.center, options);\n\treturn paper.circle(c.x, c.y, 0.8 * options.atomSelectionPlateRadius)\n\t\t.attr(options.selectionStyle);\n};\n\n/**\n * @param restruct { ReStruct }\n * @param bid { number }\n * @param options { object }\n */\nReBond.prototype.show = function (restruct, bid, options) { // eslint-disable-line max-statements\n\tvar render = restruct.render;\n\tvar struct = restruct.molecule;\n\tvar paper = render.paper;\n\tvar hb1 = struct.halfBonds.get(this.b.hb1),\n\t\thb2 = struct.halfBonds.get(this.b.hb2);\n\n\tcheckStereoBold(bid, this, restruct);\n\tbondRecalc(this, restruct, options);\n\tsetDoubleBondShift(this, struct);\n\n\tthis.path = getBondPath(restruct, this, hb1, hb2);\n\n\tthis.rbb = util.relBox(this.path.getBBox());\n\trestruct.addReObjectPath('data', this.visel, this.path, null, true);\n\tvar reactingCenter = {};\n\treactingCenter.path = getReactingCenterPath(render, this, hb1, hb2);\n\tif (reactingCenter.path) {\n\t\treactingCenter.rbb = util.relBox(reactingCenter.path.getBBox());\n\t\trestruct.addReObjectPath('data', this.visel, reactingCenter.path, null, true);\n\t}\n\tvar topology = {};\n\ttopology.path = getTopologyMark(render, this, hb1, hb2);\n\tif (topology.path) {\n\t\ttopology.rbb = util.relBox(topology.path.getBBox());\n\t\trestruct.addReObjectPath('data', this.visel, topology.path, null, true);\n\t}\n\tthis.setHighlight(this.highlight, render);\n\n\tvar ipath = null;\n\tvar bondIdxOff = options.subFontSize * 0.6;\n\tif (options.showBondIds) {\n\t\tipath = getIdsPath(bid, paper, hb1, hb2, bondIdxOff, 0.5, 0.5, hb1.norm);\n\t\trestruct.addReObjectPath('indices', this.visel, ipath);\n\t}\n\tif (options.showHalfBondIds) {\n\t\tipath = getIdsPath(this.b.hb1, paper, hb1, hb2, bondIdxOff, 0.8, 0.2, hb1.norm);\n\t\trestruct.addReObjectPath('indices', this.visel, ipath);\n\t\tipath = getIdsPath(this.b.hb2, paper, hb1, hb2, bondIdxOff, 0.2, 0.8, hb2.norm);\n\t\trestruct.addReObjectPath('indices', this.visel, ipath);\n\t}\n\tif (options.showLoopIds && !options.showBondIds) {\n\t\tipath = getIdsPath(hb1.loop, paper, hb1, hb2, bondIdxOff, 0.5, 0.5, hb2.norm);\n\t\trestruct.addReObjectPath('indices', this.visel, ipath);\n\t\tipath = getIdsPath(hb2.loop, paper, hb1, hb2, bondIdxOff, 0.5, 0.5, hb1.norm);\n\t\trestruct.addReObjectPath('indices', this.visel, ipath);\n\t}\n};\n\nfunction findIncomingStereoUpBond(atom, bid0, includeBoldStereoBond, restruct) {\n\treturn atom.neighbors.findIndex((hbid) => {\n\t\tconst hb = restruct.molecule.halfBonds.get(hbid);\n\t\tconst bid = hb.bid;\n\t\tif (bid === bid0)\n\t\t\treturn false;\n\n\t\tconst neibond = restruct.bonds.get(bid);\n\n\t\tconst singleUp = neibond.b.type === Bond.PATTERN.TYPE.SINGLE &&\n\t\t\tneibond.b.stereo === Bond.PATTERN.STEREO.UP;\n\n\t\tif (singleUp)\n\t\t\treturn neibond.b.end === hb.begin || (neibond.boldStereo && includeBoldStereoBond);\n\n\t\treturn !!(\n\t\t\tneibond.b.type === Bond.PATTERN.TYPE.DOUBLE &&\n\t\t\tneibond.b.stereo === Bond.PATTERN.STEREO.NONE &&\n\t\t\tincludeBoldStereoBond && neibond.boldStereo\n\t\t);\n\t});\n}\n\nfunction findIncomingUpBonds(bid0, bond, restruct) {\n\tconst halfbonds = [bond.b.begin, bond.b.end].map((aid) => {\n\t\tconst atom = restruct.molecule.atoms.get(aid);\n\t\tconst pos = findIncomingStereoUpBond(atom, bid0, true, restruct);\n\t\treturn pos < 0 ? -1 : atom.neighbors[pos];\n\t});\n\tconsole.assert(halfbonds.length === 2);\n\tbond.neihbid1 = restruct.atoms.get(bond.b.begin).showLabel ? -1 : halfbonds[0];\n\tbond.neihbid2 = restruct.atoms.get(bond.b.end).showLabel ? -1 : halfbonds[1];\n}\n\nfunction checkStereoBold(bid0, bond, restruct) {\n\tvar halfbonds = [bond.b.begin, bond.b.end].map((aid) => {\n\t\tvar atom = restruct.molecule.atoms.get(aid);\n\t\tvar pos = findIncomingStereoUpBond(atom, bid0, false, restruct);\n\t\treturn pos < 0 ? -1 : atom.neighbors[pos];\n\t});\n\tconsole.assert(halfbonds.length === 2);\n\tbond.boldStereo = halfbonds[0] >= 0 && halfbonds[1] >= 0;\n}\n\n/**\n * @param restruct { ReStruct }\n * @param bond { ReBond }\n * @param hb1 { HalfBond }\n * @param hb2 { HalfBond }\n * @return {*}\n */\nfunction getBondPath(restruct, bond, hb1, hb2) {\n\tvar path = null;\n\tvar render = restruct.render;\n\tvar struct = restruct.molecule;\n\tvar shiftA = !restruct.atoms.get(hb1.begin).showLabel;\n\tvar shiftB = !restruct.atoms.get(hb2.begin).showLabel;\n\n\tswitch (bond.b.type) {\n\tcase Bond.PATTERN.TYPE.SINGLE:\n\t\tswitch (bond.b.stereo) {\n\t\tcase Bond.PATTERN.STEREO.UP:\n\t\t\tfindIncomingUpBonds(hb1.bid, bond, restruct);\n\t\t\tif (bond.boldStereo && bond.neihbid1 >= 0 && bond.neihbid2 >= 0)\n\t\t\t\tpath = getBondSingleStereoBoldPath(render, hb1, hb2, bond, struct);\n\t\t\telse\n\t\t\t\tpath = getBondSingleUpPath(render, hb1, hb2, bond, struct);\n\t\t\tbreak;\n\t\tcase Bond.PATTERN.STEREO.DOWN:\n\t\t\tpath = getBondSingleDownPath(render, hb1, hb2);\n\t\t\tbreak;\n\t\tcase Bond.PATTERN.STEREO.EITHER:\n\t\t\tpath = getBondSingleEitherPath(render, hb1, hb2);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpath = draw.bondSingle(render.paper, hb1, hb2, render.options);\n\t\t\tbreak;\n\t\t}\n\t\tbreak;\n\tcase Bond.PATTERN.TYPE.DOUBLE:\n\t\tfindIncomingUpBonds(hb1.bid, bond, restruct);\n\t\tif (bond.b.stereo === Bond.PATTERN.STEREO.NONE && bond.boldStereo &&\n\t\t\tbond.neihbid1 >= 0 && bond.neihbid2 >= 0)\n\t\t\tpath = getBondDoubleStereoBoldPath(render, hb1, hb2, bond, struct, shiftA, shiftB);\n\t\telse\n\t\t\tpath = getBondDoublePath(render, hb1, hb2, bond, shiftA, shiftB);\n\t\tbreak;\n\tcase Bond.PATTERN.TYPE.TRIPLE:\n\t\tpath = draw.bondTriple(render.paper, hb1, hb2, render.options);\n\t\tbreak;\n\tcase Bond.PATTERN.TYPE.AROMATIC:\n\t\tvar inAromaticLoop = (hb1.loop >= 0 && struct.loops.get(hb1.loop).aromatic) ||\n\t\t\t(hb2.loop >= 0 && struct.loops.get(hb2.loop).aromatic);\n\t\tpath = inAromaticLoop ? draw.bondSingle(render.paper, hb1, hb2, render.options) :\n\t\t\tgetBondAromaticPath(render, hb1, hb2, bond, shiftA, shiftB);\n\t\tbreak;\n\tcase Bond.PATTERN.TYPE.SINGLE_OR_DOUBLE:\n\t\tpath = getSingleOrDoublePath(render, hb1, hb2);\n\t\tbreak;\n\tcase Bond.PATTERN.TYPE.SINGLE_OR_AROMATIC:\n\t\tpath = getBondAromaticPath(render, hb1, hb2, bond, shiftA, shiftB);\n\t\tbreak;\n\tcase Bond.PATTERN.TYPE.DOUBLE_OR_AROMATIC:\n\t\tpath = getBondAromaticPath(render, hb1, hb2, bond, shiftA, shiftB);\n\t\tbreak;\n\tcase Bond.PATTERN.TYPE.ANY:\n\t\tpath = draw.bondAny(render.paper, hb1, hb2, render.options);\n\t\tbreak;\n\tdefault:\n\t\tthrow new Error('Bond type ' + bond.b.type + ' not supported');\n\t}\n\treturn path;\n}\n\n/* Get Path */\nfunction getBondSingleUpPath(render, hb1, hb2, bond, struct) { // eslint-disable-line max-params\n\tvar a = hb1.p,\n\t\tb = hb2.p,\n\t\tn = hb1.norm;\n\tvar options = render.options;\n\tvar bsp = 0.7 * options.stereoBond;\n\tvar b2 = b.addScaled(n, bsp);\n\tvar b3 = b.addScaled(n, -bsp);\n\tif (bond.neihbid2 >= 0) { // if the end is shared with another up-bond heading this way\n\t\tvar coords = stereoUpBondGetCoordinates(hb2, bond.neihbid2, options.stereoBond, struct);\n\t\tb2 = coords[0];\n\t\tb3 = coords[1];\n\t}\n\treturn draw.bondSingleUp(render.paper, a, b2, b3, options);\n}\n\nfunction getBondSingleStereoBoldPath(render, hb1, hb2, bond, struct) { // eslint-disable-line max-params\n\tvar options = render.options;\n\tvar coords1 = stereoUpBondGetCoordinates(hb1, bond.neihbid1, options.stereoBond, struct);\n\tvar coords2 = stereoUpBondGetCoordinates(hb2, bond.neihbid2, options.stereoBond, struct);\n\tvar a1 = coords1[0];\n\tvar a2 = coords1[1];\n\tvar a3 = coords2[0];\n\tvar a4 = coords2[1];\n\treturn draw.bondSingleStereoBold(render.paper, a1, a2, a3, a4, options);\n}\n\nfunction getBondDoubleStereoBoldPath(render, hb1, hb2, bond, struct, shiftA, shiftB) { // eslint-disable-line max-params\n\tvar a = hb1.p,\n\t\tb = hb2.p,\n\t\tn = hb1.norm,\n\t\tshift = bond.doubleBondShift;\n\tvar bsp = 1.5 * render.options.stereoBond;\n\tvar b1 = a.addScaled(n, bsp * shift);\n\tvar b2 = b.addScaled(n, bsp * shift);\n\tif (shift > 0) {\n\t\tif (shiftA)\n\t\t\tb1 = b1.addScaled(hb1.dir, bsp * getBondLineShift(hb1.rightCos, hb1.rightSin));\n\t\tif (shiftB)\n\t\t\tb2 = b2.addScaled(hb1.dir, -bsp * getBondLineShift(hb2.leftCos, hb2.leftSin));\n\t} else if (shift < 0) {\n\t\tif (shiftA)\n\t\t\tb1 = b1.addScaled(hb1.dir, bsp * getBondLineShift(hb1.leftCos, hb1.leftSin));\n\t\tif (shiftB)\n\t\t\tb2 = b2.addScaled(hb1.dir, -bsp * getBondLineShift(hb2.rightCos, hb2.rightSin));\n\t}\n\tvar sgBondPath = getBondSingleStereoBoldPath(render, hb1, hb2, bond, struct);\n\treturn draw.bondDoubleStereoBold(render.paper, sgBondPath, b1, b2, render.options);\n}\n\nfunction getBondLineShift(cos, sin) {\n\tif (sin < 0 || Math.abs(cos) > 0.9)\n\t\treturn 0;\n\treturn sin / (1 - cos);\n}\n\nfunction stereoUpBondGetCoordinates(hb, neihbid, bondSpace, struct) {\n\tvar neihb = struct.halfBonds.get(neihbid);\n\tvar cos = Vec2.dot(hb.dir, neihb.dir);\n\tvar sin = Vec2.cross(hb.dir, neihb.dir);\n\tvar cosHalf = Math.sqrt(0.5 * (1 - cos));\n\tvar biss = neihb.dir.rotateSC((sin >= 0 ? -1 : 1) * cosHalf, Math.sqrt(0.5 * (1 + cos)));\n\n\tvar denomAdd = 0.3;\n\tvar scale = 0.7;\n\tvar a1 = hb.p.addScaled(biss, scale * bondSpace / (cosHalf + denomAdd));\n\tvar a2 = hb.p.addScaled(biss.negated(), scale * bondSpace / (cosHalf + denomAdd));\n\treturn sin > 0 ? [a1, a2] : [a2, a1];\n}\n\nfunction getBondSingleDownPath(render, hb1, hb2) {\n\tvar a = hb1.p,\n\t\tb = hb2.p;\n\tvar options = render.options;\n\tvar d = b.sub(a);\n\tvar len = d.length() + 0.2;\n\td = d.normalized();\n\tvar interval = 1.2 * options.lineWidth;\n\tvar nlines = Math.max(Math.floor((len - options.lineWidth) /\n\t\t\t(options.lineWidth + interval)), 0) + 2;\n\tvar step = len / (nlines - 1);\n\treturn draw.bondSingleDown(render.paper, hb1, d, nlines, step, options);\n}\n\nfunction getBondSingleEitherPath(render, hb1, hb2) {\n\tvar a = hb1.p,\n\t\tb = hb2.p;\n\tvar options = render.options;\n\tvar d = b.sub(a);\n\tvar len = d.length();\n\td = d.normalized();\n\tvar interval = 0.6 * options.lineWidth;\n\tvar nlines = Math.max(Math.floor((len - options.lineWidth) /\n\t\t\t(options.lineWidth + interval)), 0) + 2;\n\tvar step = len / (nlines - 0.5);\n\treturn draw.bondSingleEither(render.paper, hb1, d, nlines, step, options);\n}\n\nfunction getBondDoublePath(render, hb1, hb2, bond, shiftA, shiftB) { // eslint-disable-line max-params, max-statements\n\tconst cisTrans = bond.b.stereo === Bond.PATTERN.STEREO.CIS_TRANS;\n\n\tconst a = hb1.p;\n\tconst b = hb2.p;\n\tconst n = hb1.norm;\n\tconst shift = cisTrans ? 0 : bond.doubleBondShift;\n\n\tconst options = render.options;\n\tconst bsp = options.bondSpace / 2;\n\tconst s1 = bsp + (shift * bsp);\n\tconst s2 = -bsp + (shift * bsp);\n\n\tlet a1 = a.addScaled(n, s1);\n\tlet b1 = b.addScaled(n, s1);\n\tlet a2 = a.addScaled(n, s2);\n\tlet b2 = b.addScaled(n, s2);\n\n\tif (shift > 0) {\n\t\tif (shiftA) {\n\t\t\ta1 = a1.addScaled(hb1.dir, options.bondSpace *\n\t\t\t\tgetBondLineShift(hb1.rightCos, hb1.rightSin));\n\t\t}\n\t\tif (shiftB) {\n\t\t\tb1 = b1.addScaled(hb1.dir, -options.bondSpace *\n\t\t\t\tgetBondLineShift(hb2.leftCos, hb2.leftSin));\n\t\t}\n\t} else if (shift < 0) {\n\t\tif (shiftA) {\n\t\t\ta2 = a2.addScaled(hb1.dir, options.bondSpace *\n\t\t\t\tgetBondLineShift(hb1.leftCos, hb1.leftSin));\n\t\t}\n\t\tif (shiftB) {\n\t\t\tb2 = b2.addScaled(hb1.dir, -options.bondSpace *\n\t\t\t\tgetBondLineShift(hb2.rightCos, hb2.rightSin));\n\t\t}\n\t}\n\n\treturn draw.bondDouble(render.paper, a1, a2, b1, b2, cisTrans, options);\n}\n\nfunction getSingleOrDoublePath(render, hb1, hb2) {\n\tvar a = hb1.p,\n\t\tb = hb2.p;\n\tvar options = render.options;\n\n\tvar nSect = (Vec2.dist(a, b) / (options.bondSpace + options.lineWidth)).toFixed() - 0;\n\tif (!(nSect & 1))\n\t\tnSect += 1;\n\treturn draw.bondSingleOrDouble(render.paper, hb1, hb2, nSect, options);\n}\n\nfunction getBondAromaticPath(render, hb1, hb2, bond, shiftA, shiftB) { // eslint-disable-line max-params\n\tvar dashdotPattern = [0.125, 0.125, 0.005, 0.125];\n\tvar mark = null,\n\t\tdash = null;\n\tvar options = render.options;\n\tvar bondShift = bond.doubleBondShift;\n\n\tif (bond.b.type === Bond.PATTERN.TYPE.SINGLE_OR_AROMATIC) {\n\t\tmark = bondShift > 0 ? 1 : 2;\n\t\tdash = dashdotPattern.map(v => v * options.scale);\n\t}\n\tif (bond.b.type === Bond.PATTERN.TYPE.DOUBLE_OR_AROMATIC) {\n\t\tmark = 3;\n\t\tdash = dashdotPattern.map(v => v * options.scale);\n\t}\n\tvar paths = getAromaticBondPaths(hb1, hb2, bondShift, shiftA, shiftB, options.bondSpace, mark, dash);\n\treturn draw.bondAromatic(render.paper, paths, bondShift, options);\n}\n\nfunction getAromaticBondPaths(hb1, hb2, shift, shiftA, shiftB, bondSpace, mask, dash) { // eslint-disable-line max-params, max-statements\n\tvar a = hb1.p,\n\t\tb = hb2.p,\n\t\tn = hb1.norm;\n\tvar bsp = bondSpace / 2;\n\tvar s1 = bsp + (shift * bsp),\n\t\ts2 = -bsp + (shift * bsp);\n\tvar a2 = a.addScaled(n, s1);\n\tvar b2 = b.addScaled(n, s1);\n\tvar a3 = a.addScaled(n, s2);\n\tvar b3 = b.addScaled(n, s2);\n\tif (shift > 0) {\n\t\tif (shiftA) {\n\t\t\ta2 = a2.addScaled(hb1.dir, bondSpace *\n\t\t\t\tgetBondLineShift(hb1.rightCos, hb1.rightSin));\n\t\t}\n\t\tif (shiftB) {\n\t\t\tb2 = b2.addScaled(hb1.dir, -bondSpace *\n\t\t\t\tgetBondLineShift(hb2.leftCos, hb2.leftSin));\n\t\t}\n\t} else if (shift < 0) {\n\t\tif (shiftA) {\n\t\t\ta3 = a3.addScaled(hb1.dir, bondSpace *\n\t\t\t\tgetBondLineShift(hb1.leftCos, hb1.leftSin));\n\t\t}\n\t\tif (shiftB) {\n\t\t\tb3 = b3.addScaled(hb1.dir, -bondSpace *\n\t\t\t\tgetBondLineShift(hb2.rightCos, hb2.rightSin));\n\t\t}\n\t}\n\treturn draw.aromaticBondPaths(a2, a3, b2, b3, mask, dash);\n}\n\nfunction getReactingCenterPath(render, bond, hb1, hb2) { // eslint-disable-line max-statements\n\tvar a = hb1.p,\n\t\tb = hb2.p;\n\tvar c = b.add(a).scaled(0.5);\n\tvar d = b.sub(a).normalized();\n\tvar n = d.rotateSC(1, 0);\n\n\tvar p = [];\n\n\tvar lw = render.options.lineWidth,\n\t\tbs = render.options.bondSpace / 2;\n\tvar alongIntRc = lw, // half interval along for CENTER\n\t\talongIntMadeBroken = 2 * lw, // half interval between along for MADE_OR_BROKEN\n\t\talongSz = 1.5 * bs, // half size along for CENTER\n\t\tacrossInt = 1.5 * bs, // half interval across for CENTER\n\t\tacrossSz = 3.0 * bs, // half size across for all\n\t\ttiltTan = 0.2; // tangent of the tilt angle\n\n\tswitch (bond.b.reactingCenterStatus) {\n\tcase Bond.PATTERN.REACTING_CENTER.NOT_CENTER: // X\n\t\tp.push(c.addScaled(n, acrossSz).addScaled(d, tiltTan * acrossSz));\n\t\tp.push(c.addScaled(n, -acrossSz).addScaled(d, -tiltTan * acrossSz));\n\t\tp.push(c.addScaled(n, acrossSz).addScaled(d, -tiltTan * acrossSz));\n\t\tp.push(c.addScaled(n, -acrossSz).addScaled(d, tiltTan * acrossSz));\n\t\tbreak;\n\tcase Bond.PATTERN.REACTING_CENTER.CENTER: // #\n\t\tp.push(c.addScaled(n, acrossSz).addScaled(d, tiltTan * acrossSz).addScaled(d, alongIntRc));\n\t\tp.push(c.addScaled(n, -acrossSz).addScaled(d, -tiltTan * acrossSz).addScaled(d, alongIntRc));\n\t\tp.push(c.addScaled(n, acrossSz).addScaled(d, tiltTan * acrossSz).addScaled(d, -alongIntRc));\n\t\tp.push(c.addScaled(n, -acrossSz).addScaled(d, -tiltTan * acrossSz).addScaled(d, -alongIntRc));\n\t\tp.push(c.addScaled(d, alongSz).addScaled(n, acrossInt));\n\t\tp.push(c.addScaled(d, -alongSz).addScaled(n, acrossInt));\n\t\tp.push(c.addScaled(d, alongSz).addScaled(n, -acrossInt));\n\t\tp.push(c.addScaled(d, -alongSz).addScaled(n, -acrossInt));\n\t\tbreak;\n\t\t// case Bond.PATTERN.REACTING_CENTER.UNCHANGED: draw a circle\n\tcase Bond.PATTERN.REACTING_CENTER.MADE_OR_BROKEN:\n\t\tp.push(c.addScaled(n, acrossSz).addScaled(d, alongIntMadeBroken));\n\t\tp.push(c.addScaled(n, -acrossSz).addScaled(d, alongIntMadeBroken));\n\t\tp.push(c.addScaled(n, acrossSz).addScaled(d, -alongIntMadeBroken));\n\t\tp.push(c.addScaled(n, -acrossSz).addScaled(d, -alongIntMadeBroken));\n\t\tbreak;\n\tcase Bond.PATTERN.REACTING_CENTER.ORDER_CHANGED:\n\t\tp.push(c.addScaled(n, acrossSz));\n\t\tp.push(c.addScaled(n, -acrossSz));\n\t\tbreak;\n\tcase Bond.PATTERN.REACTING_CENTER.MADE_OR_BROKEN_AND_CHANGED:\n\t\tp.push(c.addScaled(n, acrossSz).addScaled(d, alongIntMadeBroken));\n\t\tp.push(c.addScaled(n, -acrossSz).addScaled(d, alongIntMadeBroken));\n\t\tp.push(c.addScaled(n, acrossSz).addScaled(d, -alongIntMadeBroken));\n\t\tp.push(c.addScaled(n, -acrossSz).addScaled(d, -alongIntMadeBroken));\n\t\tp.push(c.addScaled(n, acrossSz));\n\t\tp.push(c.addScaled(n, -acrossSz));\n\t\tbreak;\n\tdefault:\n\t\treturn null;\n\t}\n\treturn draw.reactingCenter(render.paper, p, render.options);\n}\n\nfunction getTopologyMark(render, bond, hb1, hb2) { // eslint-disable-line max-statements\n\tvar options = render.options;\n\tvar mark = null;\n\n\tif (bond.b.topology === Bond.PATTERN.TOPOLOGY.RING)\n\t\tmark = 'rng';\n\telse if (bond.b.topology === Bond.PATTERN.TOPOLOGY.CHAIN)\n\t\tmark = 'chn';\n\telse\n\t\treturn null;\n\n\tvar a = hb1.p,\n\t\tb = hb2.p;\n\tvar c = b.add(a).scaled(0.5);\n\tvar d = b.sub(a).normalized();\n\tvar n = d.rotateSC(1, 0);\n\tvar fixed = options.lineWidth;\n\tif (bond.doubleBondShift > 0)\n\t\tn = n.scaled(-bond.doubleBondShift);\n\telse if (bond.doubleBondShift == 0)\n\t\tfixed += options.bondSpace / 2;\n\n\tvar s = new Vec2(2, 1).scaled(options.bondSpace);\n\tif (bond.b.type == Bond.PATTERN.TYPE.TRIPLE)\n\t\tfixed += options.bondSpace;\n\tvar p = c.add(new Vec2(n.x * (s.x + fixed), n.y * (s.y + fixed)));\n\n\treturn draw.topologyMark(render.paper, p, mark, options);\n}\n\nfunction getIdsPath(bid, paper, hb1, hb2, bondIdxOff, param1, param2, norm) { // eslint-disable-line max-params\n\tvar pb = Vec2.lc(hb1.p, param1, hb2.p, param2, norm, bondIdxOff);\n\tvar ipath = paper.text(pb.x, pb.y, bid.toString());\n\tvar irbb = util.relBox(ipath.getBBox());\n\tdraw.recenterText(ipath, irbb);\n\treturn ipath;\n}\n/* ----- */\n\nfunction setDoubleBondShift(bond, struct) {\n\tvar loop1,\n\t\tloop2;\n\tloop1 = struct.halfBonds.get(bond.b.hb1).loop;\n\tloop2 = struct.halfBonds.get(bond.b.hb2).loop;\n\tif (loop1 >= 0 && loop2 >= 0) {\n\t\tvar d1 = struct.loops.get(loop1).dblBonds;\n\t\tvar d2 = struct.loops.get(loop2).dblBonds;\n\t\tvar n1 = struct.loops.get(loop1).hbs.length;\n\t\tvar n2 = struct.loops.get(loop2).hbs.length;\n\t\tbond.doubleBondShift = selectDoubleBondShift(n1, n2, d1, d2);\n\t} else if (loop1 >= 0) {\n\t\tbond.doubleBondShift = -1;\n\t} else if (loop2 >= 0) {\n\t\tbond.doubleBondShift = 1;\n\t} else {\n\t\tbond.doubleBondShift = selectDoubleBondShiftChain(struct, bond);\n\t}\n}\n\nfunction bondRecalc(bond, restruct, options) {\n\tvar render = restruct.render;\n\tvar atom1 = restruct.atoms.get(bond.b.begin);\n\tvar atom2 = restruct.atoms.get(bond.b.end);\n\tvar p1 = scale.obj2scaled(atom1.a.pp, render.options);\n\tvar p2 = scale.obj2scaled(atom2.a.pp, render.options);\n\tvar hb1 = restruct.molecule.halfBonds.get(bond.b.hb1);\n\tvar hb2 = restruct.molecule.halfBonds.get(bond.b.hb2);\n\thb1.p = shiftBondEnd(atom1, p1, hb1.dir, 2 * options.lineWidth);\n\thb2.p = shiftBondEnd(atom2, p2, hb2.dir, 2 * options.lineWidth);\n\tbond.b.center = Vec2.lc2(atom1.a.pp, 0.5, atom2.a.pp, 0.5);\n\tbond.b.len = Vec2.dist(p1, p2);\n\tbond.b.sb = options.lineWidth * 5;\n\t/* eslint-disable no-mixed-operators*/\n\tbond.b.sa = Math.max(bond.b.sb, bond.b.len / 2 - options.lineWidth * 2);\n\t/* eslint-enable no-mixed-operators*/\n\tbond.b.angle = Math.atan2(hb1.dir.y, hb1.dir.x) * 180 / Math.PI;\n}\n\nfunction shiftBondEnd(atom, pos0, dir, margin) {\n\tvar t = 0;\n\tvar visel = atom.visel;\n\tfor (var k = 0; k < visel.exts.length; ++k) {\n\t\tvar box = visel.exts[k].translate(pos0);\n\t\tt = Math.max(t, util.shiftRayBox(pos0, dir, box));\n\t}\n\tif (t > 0)\n\t\tpos0 = pos0.addScaled(dir, t + margin);\n\treturn pos0;\n}\n\nfunction selectDoubleBondShift(n1, n2, d1, d2) {\n\tif (n1 == 6 && n2 != 6 && (d1 > 1 || d2 == 1))\n\t\treturn -1;\n\tif (n2 == 6 && n1 != 6 && (d2 > 1 || d1 == 1))\n\t\treturn 1;\n\tif (n2 * d1 > n1 * d2)\n\t\treturn -1;\n\tif (n2 * d1 < n1 * d2)\n\t\treturn 1;\n\tif (n2 > n1)\n\t\treturn -1;\n\treturn 1;\n}\n\nfunction selectDoubleBondShiftChain(struct, bond) {\n\tvar hb1 = struct.halfBonds.get(bond.b.hb1);\n\tvar hb2 = struct.halfBonds.get(bond.b.hb2);\n\tvar nLeft = (hb1.leftSin > 0.3 ? 1 : 0) + (hb2.rightSin > 0.3 ? 1 : 0);\n\tvar nRight = (hb2.leftSin > 0.3 ? 1 : 0) + (hb1.rightSin > 0.3 ? 1 : 0);\n\tif (nLeft > nRight)\n\t\treturn -1;\n\tif (nLeft < nRight)\n\t\treturn 1;\n\tif ((hb1.leftSin > 0.3 ? 1 : 0) + (hb1.rightSin > 0.3 ? 1 : 0) == 1)\n\t\treturn 1;\n\treturn 0;\n}\n\nexport default ReBond;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Box2Abs from '../../util/box2abs';\nimport scale from '../../util/scale';\nimport ReObject from './reobject';\n\nfunction ReChiralFlag(pos) {\n\tthis.init('chiralFlag');\n\n\tthis.pp = pos;\n}\nReChiralFlag.prototype = new ReObject();\nReChiralFlag.isSelectable = function () {\n\treturn true;\n};\n\nReChiralFlag.prototype.highlightPath = function (render) {\n\tvar box = Box2Abs.fromRelBox(this.path.getBBox());\n\tvar sz = box.p1.sub(box.p0);\n\tvar p0 = box.p0.sub(render.options.offset);\n\treturn render.paper.rect(p0.x, p0.y, sz.x, sz.y);\n};\n\nReChiralFlag.prototype.drawHighlight = function (render) {\n\tif (!this.path) return null;\n\tvar ret = this.highlightPath(render).attr(render.options.highlightStyle);\n\trender.ctab.addReObjectPath('highlighting', this.visel, ret);\n\treturn ret;\n};\n\nReChiralFlag.prototype.makeSelectionPlate = function (restruct, paper, options) {\n\tif (!this.path) return null;\n\treturn this.highlightPath(restruct.render).attr(options.selectionStyle);\n};\n\nReChiralFlag.prototype.show = function (restruct, id, options) {\n\tvar render = restruct.render;\n\tif (restruct.chiralFlagsChanged[id] <= 0) return;\n\n\tvar paper = render.paper;\n\tvar ps = scale.obj2scaled(this.pp, options);\n\tthis.path = paper.text(ps.x, ps.y, 'Chiral')\n\t\t.attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontsz,\n\t\t\tfill: '#000'\n\t\t});\n\trender.ctab.addReObjectPath('data', this.visel, this.path, null, true);\n};\n\nexport default ReChiralFlag;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport ReObject from './reobject';\nimport scale from '../../util/scale';\n\nfunction ReDataSGroupData(sgroup) {\n\tthis.init('sgroupData');\n\n\tthis.sgroup = sgroup;\n}\n\nReDataSGroupData.prototype = new ReObject();\nReDataSGroupData.isSelectable = function () {\n\treturn true;\n};\n\nReDataSGroupData.prototype.highlightPath = function (render) {\n\tvar box = this.sgroup.dataArea;\n\tvar p0 = scale.obj2scaled(box.p0, render.options);\n\tvar sz = scale.obj2scaled(box.p1, render.options).sub(p0);\n\treturn render.paper.rect(p0.x, p0.y, sz.x, sz.y);\n};\n\nReDataSGroupData.prototype.drawHighlight = function (render) {\n\tvar ret = this.highlightPath(render).attr(render.options.highlightStyle);\n\trender.ctab.addReObjectPath('highlighting', this.visel, ret);\n\treturn ret;\n};\n\nReDataSGroupData.prototype.makeSelectionPlate = function (restruct, paper, styles) { // TODO [MK] review parameters\n\treturn this.highlightPath(restruct.render).attr(styles.selectionStyle);\n};\n\nexport default ReDataSGroupData;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Box2Abs from '../../util/box2abs';\nimport Vec2 from '../../util/vec2';\nimport ReObject from './reobject';\nimport scale from '../../util/scale';\n\nfunction ReFrag(/* Struct.Fragment = {}*/frag) {\n\tthis.init('frag');\n\tthis.item = frag;\n}\n\nReFrag.prototype = new ReObject();\n\nReFrag.isSelectable = function () {\n\treturn false;\n};\n\nReFrag.prototype.fragGetAtoms = function (restruct, fid) {\n\treturn Array.from(restruct.atoms.keys())\n\t\t.filter(aid => restruct.atoms.get(aid).a.fragment === fid);\n};\n\nReFrag.prototype.fragGetBonds = function (restruct, fid) {\n\treturn Array.from(restruct.bonds.keys())\n\t\t.filter((bid) => {\n\t\t\tconst bond = restruct.bonds.get(bid).b;\n\n\t\t\tconst firstFrag = restruct.atoms.get(bond.begin).a.fragment;\n\t\t\tconst secondFrag = restruct.atoms.get(bond.end).a.fragment;\n\n\t\t\treturn firstFrag === fid && secondFrag === fid;\n\t\t});\n};\n\nReFrag.prototype.calcBBox = function (restruct, fid, render) { // TODO need to review parameter list\n\tvar ret;\n\trestruct.atoms.forEach((atom) => {\n\t\tif (atom.a.fragment !== fid)\n\t\t\treturn;\n\n\t\t// TODO ReObject.calcBBox to be used instead\n\t\tlet bba = atom.visel.boundingBox;\n\t\tif (!bba) {\n\t\t\tbba = new Box2Abs(atom.a.pp, atom.a.pp);\n\t\t\tconst ext = new Vec2(0.05 * 3, 0.05 * 3);\n\t\t\tbba = bba.extend(ext, ext);\n\t\t} else {\n\t\t\tif (!render) render = global._ui_editor.render; // eslint-disable-line\n\t\t\tbba = bba.translate((render.options.offset || new Vec2()).negated()).transform(scale.scaled2obj, render.options);\n\t\t}\n\t\tret = (ret ? Box2Abs.union(ret, bba) : bba);\n\t});\n\n\treturn ret;\n};\n\n// TODO need to review parameter list\nReFrag.prototype._draw = function (render, fid, attrs) { // eslint-disable-line no-underscore-dangle\n\tconst bb = this.calcBBox(render.ctab, fid, render);\n\n\tif (bb) {\n\t\tconst p0 = scale.obj2scaled(new Vec2(bb.p0.x, bb.p0.y), render.options);\n\t\tconst p1 = scale.obj2scaled(new Vec2(bb.p1.x, bb.p1.y), render.options);\n\t\treturn render.paper.rect(p0.x, p0.y, p1.x - p0.x, p1.y - p0.y, 0).attr(attrs);\n\t}\n\n\t// TODO abnormal situation, empty fragments must be destroyed by tools\n\treturn console.assert(null, 'Empty fragment');\n};\n\nReFrag.prototype.draw = function (render) { // eslint-disable-line no-unused-vars\n\treturn null;// this._draw(render, fid, { 'stroke' : 'lightgray' }); // [RB] for debugging only\n};\n\nReFrag.prototype.drawHighlight = function (render) { // eslint-disable-line no-unused-vars\n\t// Do nothing. This method shouldn't actually be called.\n};\n\nReFrag.prototype.setHighlight = function (highLight, render) {\n\tlet fid = render.ctab.frags.keyOf(this);\n\n\tif (!fid && fid !== 0) {\n\t\tconsole.warn('Fragment does not belong to the render');\n\t\treturn;\n\t}\n\n\tfid = parseInt(fid, 10);\n\n\trender.ctab.atoms.forEach((atom) => {\n\t\tif (atom.a.fragment === fid)\n\t\t\tatom.setHighlight(highLight, render);\n\t});\n\n\trender.ctab.bonds.forEach((bond) => {\n\t\tif (render.ctab.atoms.get(bond.b.begin).a.fragment === fid)\n\t\t\tbond.setHighlight(highLight, render);\n\t});\n};\n\nexport default ReFrag;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../../util/vec2';\nimport Visel from './visel';\nimport ReObject from './reobject';\nimport scale from '../../util/scale';\nimport util from '../util';\nimport { Bond } from '../../chem/struct';\n\nconst tfx = util.tfx;\n\nfunction ReLoop(loop) {\n\tthis.loop = loop;\n\tthis.visel = new Visel('loop');\n\tthis.centre = new Vec2();\n\tthis.radius = new Vec2();\n}\nReLoop.prototype = new ReObject();\nReLoop.isSelectable = function () {\n\treturn false;\n};\n\nReLoop.prototype.show = function (restruct, rlid, options) { // eslint-disable-line max-statements\n\tvar render = restruct.render;\n\tvar paper = render.paper;\n\tvar molecule = restruct.molecule;\n\tvar loop = this.loop;\n\tthis.centre = new Vec2();\n\tloop.hbs.forEach((hbid) => {\n\t\tvar hb = molecule.halfBonds.get(hbid);\n\t\tvar bond = restruct.bonds.get(hb.bid);\n\t\tvar apos = scale.obj2scaled(restruct.atoms.get(hb.begin).a.pp, options);\n\t\tif (bond.b.type !== Bond.PATTERN.TYPE.AROMATIC)\n\t\t\tloop.aromatic = false;\n\t\tthis.centre.add_(apos); // eslint-disable-line no-underscore-dangle\n\t});\n\tloop.convex = true;\n\tfor (var k = 0; k < this.loop.hbs.length; ++k) {\n\t\tvar hba = molecule.halfBonds.get(loop.hbs[k]);\n\t\tvar hbb = molecule.halfBonds.get(loop.hbs[(k + 1) % loop.hbs.length]);\n\t\tvar angle = Math.atan2(\n\t\t\tVec2.cross(hba.dir, hbb.dir),\n\t\t\tVec2.dot(hba.dir, hbb.dir)\n\t\t);\n\t\tif (angle > 0)\n\t\t\tloop.convex = false;\n\t}\n\n\tthis.centre = this.centre.scaled(1.0 / loop.hbs.length);\n\tthis.radius = -1;\n\tloop.hbs.forEach((hbid) => {\n\t\tvar hb = molecule.halfBonds.get(hbid);\n\t\tvar apos = scale.obj2scaled(restruct.atoms.get(hb.begin).a.pp, options);\n\t\tvar bpos = scale.obj2scaled(restruct.atoms.get(hb.end).a.pp, options);\n\t\tvar n = Vec2.diff(bpos, apos).rotateSC(1, 0).normalized();\n\t\tvar dist = Vec2.dot(Vec2.diff(apos, this.centre), n);\n\t\tthis.radius = (this.radius < 0) ? dist : Math.min(this.radius, dist);\n\t});\n\tthis.radius *= 0.7;\n\tif (!loop.aromatic)\n\t\treturn;\n\tvar path = null;\n\tif (loop.convex && options.aromaticCircle) {\n\t\tpath = paper.circle(this.centre.x, this.centre.y, this.radius)\n\t\t\t.attr({\n\t\t\t\tstroke: '#000',\n\t\t\t\t'stroke-width': options.lineattr['stroke-width']\n\t\t\t});\n\t} else {\n\t\tvar pathStr = '';\n\t\tfor (k = 0; k < loop.hbs.length; ++k) {\n\t\t\thba = molecule.halfBonds.get(loop.hbs[k]);\n\t\t\thbb = molecule.halfBonds.get(loop.hbs[(k + 1) % loop.hbs.length]);\n\t\t\tangle = Math.atan2(\n\t\t\t\tVec2.cross(hba.dir, hbb.dir),\n\t\t\t\tVec2.dot(hba.dir, hbb.dir)\n\t\t\t);\n\t\t\tvar halfAngle = (Math.PI - angle) / 2;\n\t\t\tvar dir = hbb.dir.rotate(halfAngle);\n\t\t\tvar pi = scale.obj2scaled(restruct.atoms.get(hbb.begin).a.pp, options);\n\t\t\tvar sin = Math.sin(halfAngle);\n\t\t\tvar minSin = 0.1;\n\t\t\tif (Math.abs(sin) < minSin)\n\t\t\t\tsin = sin * minSin / Math.abs(sin);\n\t\t\tvar offset = options.bondSpace / sin;\n\t\t\tvar qi = pi.addScaled(dir, -offset);\n\t\t\tpathStr += (k === 0 ? 'M' : 'L');\n\t\t\tpathStr += tfx(qi.x) + ',' + tfx(qi.y);\n\t\t}\n\t\tpathStr += 'Z';\n\t\tpath = paper.path(pathStr)\n\t\t\t.attr({\n\t\t\t\tstroke: '#000',\n\t\t\t\t'stroke-width': options.lineattr['stroke-width'],\n\t\t\t\t'stroke-dasharray': '- '\n\t\t\t});\n\t}\n\trestruct.addReObjectPath('data', this.visel, path, null, true);\n};\n\nReLoop.prototype.isValid = function (struct, rlid) {\n\tconst halfBonds = struct.halfBonds;\n\treturn this.loop.hbs.every(hbid =>\n\t\thalfBonds.has(hbid) && halfBonds.get(hbid).loop === rlid);\n};\n\nexport default ReLoop;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Visel from './visel';\nimport scale from '../../util/scale';\n\nfunction ReObject() {\n}\n\nReObject.prototype.init = function (viselType) {\n\tthis.visel = new Visel(viselType);\n\n\tthis.highlight = false;\n\tthis.highlighting = null;\n\tthis.selected = false;\n\tthis.selectionPlate = null;\n};\n\n// returns the bounding box of a ReObject in the object coordinates\nReObject.prototype.getVBoxObj = function (render) {\n\tvar vbox = this.visel.boundingBox;\n\tif (vbox === null)\n\t\treturn null;\n\tif (render.options.offset)\n\t\tvbox = vbox.translate(render.options.offset.negated());\n\treturn vbox.transform(scale.scaled2obj, render.options);\n};\n\nReObject.prototype.setHighlight = function (highLight, render) { // TODO render should be field\n\tif (highLight) {\n\t\tlet noredraw = 'highlighting' in this && this.highlighting !== null;// && !this.highlighting.removed;\n\t\tif (noredraw) {\n\t\t\tif (this.highlighting.type === 'set') {\n\t\t\t\tif (!this.highlighting[0]) return;\n\t\t\t\tnoredraw = !this.highlighting[0].removed;\n\t\t\t} else { noredraw = !this.highlighting.removed; }\n\t\t}\n\t\tif (noredraw) {\n\t\t\tthis.highlighting.show();\n\t\t} else {\n\t\t\trender.paper.setStart();\n\t\t\tthis.drawHighlight(render);\n\t\t\tthis.highlighting = render.paper.setFinish();\n\t\t}\n\t} else if (this.highlighting) {\n\t\tthis.highlighting.hide();\n\t}\n\n\tthis.highlight = highLight;\n};\n\nReObject.prototype.drawHighlight = function () {\n\tconsole.assert('ReObject.drawHighlight is not overridden'); // eslint-disable-line no-console\n};\n\nReObject.prototype.makeSelectionPlate = function () {\n\tconsole.assert(null, 'ReObject.makeSelectionPlate is not overridden'); // eslint-disable-line no-console\n};\n\nexport default ReObject;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Box2Abs from '../../util/box2abs';\nimport Vec2 from '../../util/vec2';\nimport util from '../util';\nimport draw from '../draw';\nimport scale from '../../util/scale';\n\nimport ReObject from './reobject';\n\nvar BORDER_EXT = new Vec2(0.05 * 3, 0.05 * 3);\n\nfunction ReRGroup(/* RGroup*/rgroup) {\n\tthis.init('rgroup');\n\n\tthis.labelBox = null;\n\tthis.item = rgroup;\n}\nReRGroup.prototype = new ReObject();\nReRGroup.isSelectable = function () {\n\treturn false;\n};\n\nReRGroup.prototype.getAtoms = function (render) {\n\tvar ret = [];\n\tthis.item.frags.forEach((fid) => {\n\t\tret = ret.concat(render.ctab.frags.get(fid).fragGetAtoms(render.ctab, fid));\n\t});\n\treturn ret;\n};\n\nReRGroup.prototype.getBonds = function (render) {\n\tvar ret = [];\n\tthis.item.frags.forEach((fid) => {\n\t\tret = ret.concat(render.ctab.frags.get(fid).fragGetBonds(render.ctab, fid));\n\t});\n\treturn ret;\n};\n\nReRGroup.prototype.calcBBox = function (render) {\n\tlet ret = null;\n\tthis.item.frags.forEach((fid) => {\n\t\tconst bbf = render.ctab.frags.get(fid).calcBBox(render.ctab, fid, render);\n\t\tif (bbf)\n\t\t\tret = (ret ? Box2Abs.union(ret, bbf) : bbf);\n\t});\n\n\tif (ret)\n\t\tret = ret.extend(BORDER_EXT, BORDER_EXT);\n\n\treturn ret;\n};\n\nfunction rGroupdrawBrackets(set, render, bb, d) {\n\td = scale.obj2scaled(d || new Vec2(1, 0), render.options);\n\tvar bracketWidth = Math.min(0.25, bb.sz().x * 0.3);\n\tvar bracketHeight = bb.p1.y - bb.p0.y;\n\tvar cy = 0.5 * (bb.p1.y + bb.p0.y);\n\n\tvar leftBracket = draw.bracket(render.paper, d.negated(),\n\t\td.negated().rotateSC(1, 0),\n\t\tscale.obj2scaled(new Vec2(bb.p0.x, cy), render.options),\n\t\tbracketWidth, bracketHeight, render.options);\n\n\tvar rightBracket = draw.bracket(render.paper, d, d.rotateSC(1, 0),\n\t\tscale.obj2scaled(new Vec2(bb.p1.x, cy), render.options),\n\t\tbracketWidth, bracketHeight, render.options);\n\n\treturn set.push(leftBracket, rightBracket);\n}\n\n// TODO need to review parameter list\nReRGroup.prototype.draw = function (render, options) { // eslint-disable-line max-statements\n\tconst bb = this.calcBBox(render);\n\n\tif (!bb) {\n\t\tconsole.error('Abnormal situation, empty fragments must be destroyed by tools');\n\t\treturn {};\n\t}\n\n\tconst ret = { data: [] };\n\tconst p0 = scale.obj2scaled(bb.p0, options);\n\tconst p1 = scale.obj2scaled(bb.p1, options);\n\tconst brackets = render.paper.set();\n\n\trGroupdrawBrackets(brackets, render, bb); // eslint-disable-line new-cap\n\n\tret.data.push(brackets);\n\tconst key = render.ctab.rgroups.keyOf(this);\n\tconst labelSet = render.paper.set();\n\tconst label = render.paper\n\t\t.text(p0.x, (p0.y + p1.y) / 2, 'R' + key + '=')\n\t\t.attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontRLabel,\n\t\t\tfill: 'black'\n\t\t});\n\n\tconst labelBox = util.relBox(label.getBBox());\n\tlabel.translateAbs(-labelBox.width / 2 - options.lineWidth, 0);\n\n\tlabelSet.push(label);\n\tconst logicStyle = {\n\t\tfont: options.font,\n\t\t'font-size': options.fontRLogic,\n\t\tfill: 'black'\n\t};\n\n\tconst logic = [rLogicToString(key, this.item)];\n\n\tlet shift = labelBox.height / 2 + options.lineWidth / 2;\n\tfor (let i = 0; i < logic.length; ++i) {\n\t\tconst logicPath = render.paper.text(p0.x, (p0.y + p1.y) / 2, logic[i]).attr(logicStyle);\n\t\tconst logicBox = util.relBox(logicPath.getBBox());\n\t\tshift += logicBox.height / 2;\n\t\tlogicPath.translateAbs(-logicBox.width / 2 - 6 * options.lineWidth, shift);\n\t\tshift += logicBox.height / 2 + options.lineWidth / 2;\n\t\tret.data.push(logicPath);\n\t\tlabelSet.push(logicPath);\n\t}\n\n\tret.data.push(label);\n\tthis.labelBox = Box2Abs.fromRelBox(labelSet.getBBox()).transform(scale.scaled2obj, render.options);\n\treturn ret;\n};\n\nfunction rLogicToString(id, rLogic) {\n\tconst ifThen = rLogic.ifthen > 0 ? 'IF ' : '';\n\n\tconst rangeExists = rLogic.range.startsWith('>') ||\n\t\t\t\t\t\trLogic.range.startsWith('<') ||\n\t\t\t\t\t\trLogic.range.startsWith('=');\n\n\tlet range = null;\n\tif (rLogic.range.length > 0)\n\t\trange = rangeExists ? rLogic.range : '=' + rLogic.range;\n\telse\n\t\trange = '>0';\n\n\tconst restH = rLogic.resth ? ' (RestH)' : '';\n\tconst nextRg = rLogic.ifthen > 0 ? '\\nTHEN R' + rLogic.ifthen.toString() : '';\n\n\treturn `${ifThen}R${id.toString()}${range}${restH}${nextRg}`;\n}\n\n// TODO need to review parameter list\nReRGroup.prototype._draw = function (render, rgid, attrs) { // eslint-disable-line no-underscore-dangle\n\tconst bb = this.getVBoxObj(render).extend(BORDER_EXT, BORDER_EXT); // eslint-disable-line no-underscore-dangle\n\n\tif (!bb)\n\t\treturn null;\n\n\tconst p0 = scale.obj2scaled(bb.p0, render.options);\n\tconst p1 = scale.obj2scaled(bb.p1, render.options);\n\treturn render.paper.rect(p0.x, p0.y, p1.x - p0.x, p1.y - p0.y, 0).attr(attrs);\n};\n\nReRGroup.prototype.drawHighlight = function (render) {\n\tconst rgid = render.ctab.rgroups.keyOf(this);\n\n\tif (!rgid) {\n\t\tconsole.error('Abnormal situation, fragment does not belong to the render');\n\t\treturn null;\n\t}\n\n\tconst ret = this._draw(render, rgid, render.options.highlightStyle/* { 'fill' : 'red' }*/); // eslint-disable-line no-underscore-dangle\n\trender.ctab.addReObjectPath('highlighting', this.visel, ret);\n\n\tthis.item.frags.forEach((fnum, fid) => {\n\t\trender.ctab.frags.get(fid).drawHighlight(render);\n\t});\n\n\treturn ret;\n};\n\nReRGroup.prototype.show = function (restruct, id, options) {\n\tconst drawing = this.draw(restruct.render, options);\n\n\tObject.keys(drawing).forEach((group) => {\n\t\twhile (drawing[group].length > 0)\n\t\t\trestruct.addReObjectPath(group, this.visel, drawing[group].shift(), null, true);\n\t});\n\t// TODO rgroup selection & highlighting\n};\n\nexport default ReRGroup;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport ReObject from './reobject';\nimport Box2Abs from '../../util/box2abs';\nimport Vec2 from '../../util/vec2';\nimport draw from '../draw';\nimport util from '../util';\nimport scale from '../../util/scale';\n\nfunction ReRxnArrow(/* chem.RxnArrow*/arrow) {\n\tthis.init('rxnArrow');\n\n\tthis.item = arrow;\n}\nReRxnArrow.prototype = new ReObject();\nReRxnArrow.isSelectable = function () {\n\treturn true;\n};\n\nReRxnArrow.prototype.highlightPath = function (render) {\n\tvar p = scale.obj2scaled(this.item.pp, render.options);\n\tvar s = render.options.scale;\n\treturn render.paper.rect(p.x - s, p.y - s / 4, 2 * s, s / 2, s / 8); // eslint-disable-line no-mixed-operators\n};\n\nReRxnArrow.prototype.drawHighlight = function (render) {\n\tvar ret = this.highlightPath(render).attr(render.options.highlightStyle);\n\trender.ctab.addReObjectPath('highlighting', this.visel, ret);\n\treturn ret;\n};\n\nReRxnArrow.prototype.makeSelectionPlate = function (restruct, paper, styles) {\n\treturn this.highlightPath(restruct.render).attr(styles.selectionStyle);\n};\n\nReRxnArrow.prototype.show = function (restruct, id, options) {\n\tvar render = restruct.render;\n\tvar centre = scale.obj2scaled(this.item.pp, options);\n\tvar path = draw.arrow(render.paper,\n\t\tnew Vec2(centre.x - options.scale, centre.y),\n\t\tnew Vec2(centre.x + options.scale, centre.y),\n\t\toptions);\n\tvar offset = options.offset;\n\tif (offset != null)\n\t\tpath.translateAbs(offset.x, offset.y);\n\tthis.visel.add(path, Box2Abs.fromRelBox(util.relBox(path.getBBox())));\n};\n\nexport default ReRxnArrow;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport ReObject from './reobject';\nimport Box2Abs from '../../util/box2abs';\nimport draw from '../draw';\nimport util from '../util';\nimport scale from '../../util/scale';\n\nfunction ReRxnPlus(/* chem.RxnPlus*/plus) {\n\tthis.init('rxnPlus');\n\n\tthis.item = plus;\n}\nReRxnPlus.prototype = new ReObject();\nReRxnPlus.isSelectable = function () {\n\treturn true;\n};\n\nReRxnPlus.prototype.highlightPath = function (render) {\n\tvar p = scale.obj2scaled(this.item.pp, render.options);\n\tvar s = render.options.scale;\n\t/* eslint-disable no-mixed-operators*/\n\treturn render.paper.rect(p.x - s / 4, p.y - s / 4, s / 2, s / 2, s / 8);\n\t/* eslint-enable no-mixed-operators*/\n};\n\nReRxnPlus.prototype.drawHighlight = function (render) {\n\tvar ret = this.highlightPath(render).attr(render.options.highlightStyle);\n\trender.ctab.addReObjectPath('highlighting', this.visel, ret);\n\treturn ret;\n};\n\nReRxnPlus.prototype.makeSelectionPlate = function (restruct, paper, styles) { // TODO [MK] review parameters\n\treturn this.highlightPath(restruct.render).attr(styles.selectionStyle);\n};\n\nReRxnPlus.prototype.show = function (restruct, id, options) {\n\tvar render = restruct.render;\n\tvar centre = scale.obj2scaled(this.item.pp, options);\n\tvar path = draw.plus(render.paper, centre, options);\n\tvar offset = options.offset;\n\tif (offset != null)\n\t\tpath.translateAbs(offset.x, offset.y);\n\tthis.visel.add(path, Box2Abs.fromRelBox(util.relBox(path.getBBox())));\n};\n\nexport default ReRxnPlus;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Box2Abs from '../../util/box2abs';\nimport Vec2 from '../../util/vec2';\nimport Pile from '../../util/pile';\nimport util from '../util';\nimport scale from '../../util/scale';\n\nimport { SGroup } from '../../chem/struct';\nimport draw from '../draw';\n\nimport ReDataSGroupData from './redatasgroupdata';\nimport ReObject from './reobject';\n\nconst tfx = util.tfx;\n\nfunction ReSGroup(sgroup) {\n\tthis.init('sgroup');\n\n\tthis.item = sgroup;\n}\nReSGroup.prototype = new ReObject();\nReSGroup.isSelectable = function () {\n\treturn false;\n};\n\nReSGroup.prototype.draw = function (remol, sgroup) {\n\tvar render = remol.render;\n\tvar set = render.paper.set();\n\tvar inBonds = [],\n\t\txBonds = [];\n\tvar atomSet = new Pile(sgroup.atoms);\n\tSGroup.getCrossBonds(inBonds, xBonds, remol.molecule, atomSet);\n\tbracketPos(sgroup, render, remol.molecule, xBonds);\n\tvar bb = sgroup.bracketBox;\n\tvar d = sgroup.bracketDir;\n\tsgroup.areas = [bb];\n\n\tswitch (sgroup.type) {\n\tcase 'MUL':\n\t\tSGroupdrawBrackets(set, render, sgroup, xBonds, atomSet, bb, d, sgroup.data.mul);\n\t\tbreak;\n\tcase 'SRU':\n\t\tvar connectivity = sgroup.data.connectivity || 'eu';\n\t\tif (connectivity == 'ht')\n\t\t\tconnectivity = '';\n\t\tvar subscript = sgroup.data.subscript || 'n';\n\t\tSGroupdrawBrackets(set, render, sgroup, xBonds, atomSet, bb, d, subscript, connectivity);\n\t\tbreak;\n\tcase 'SUP':\n\t\tSGroupdrawBrackets(set, render, sgroup, xBonds, atomSet, bb, d, sgroup.data.name, null, { 'font-style': 'italic' });\n\t\tbreak;\n\tcase 'GEN':\n\t\tSGroupdrawBrackets(set, render, sgroup, xBonds, atomSet, bb, d);\n\t\tbreak;\n\tcase 'DAT':\n\t\tset = drawGroupDat(remol, sgroup);\n\t\tbreak;\n\tdefault: break;\n\t}\n\treturn set;\n};\n\nfunction SGroupdrawBrackets(set, render, sg, xbonds, atomSet, bb, d, lowerIndexText, upperIndexText, indexAttribute) { // eslint-disable-line max-params\n\tvar brackets = getBracketParameters(render.ctab.molecule, xbonds, atomSet, bb, d, render, sg.id);\n\tvar ir = -1;\n\tfor (var i = 0; i < brackets.length; ++i) {\n\t\tvar bracket = brackets[i];\n\t\tvar path = draw.bracket(render.paper, scale.obj2scaled(bracket.d, render.options),\n\t\t\tscale.obj2scaled(bracket.n, render.options),\n\t\t\tscale.obj2scaled(bracket.c, render.options),\n\t\t\tbracket.w, bracket.h, render.options);\n\t\tset.push(path);\n\t\tif (ir < 0 || brackets[ir].d.x < bracket.d.x || (brackets[ir].d.x == bracket.d.x && brackets[ir].d.y > bracket.d.y))\n\t\t\tir = i;\n\t}\n\tvar bracketR = brackets[ir];\n\tfunction renderIndex(text, shift) {\n\t\tvar indexPos = scale.obj2scaled(bracketR.c.addScaled(bracketR.n, shift * bracketR.h), render.options);\n\t\tvar indexPath = render.paper.text(indexPos.x, indexPos.y, text)\n\t\t\t.attr({\n\t\t\t\tfont: render.options.font,\n\t\t\t\t'font-size': render.options.fontszsub\n\t\t\t});\n\t\tif (indexAttribute)\n\t\t\tindexPath.attr(indexAttribute);\n\t\tvar indexBox = Box2Abs.fromRelBox(util.relBox(indexPath.getBBox()));\n\t\tvar t = Math.max(util.shiftRayBox(indexPos, bracketR.d.negated(), indexBox), 3) + 2;\n\t\tindexPath.translateAbs(t * bracketR.d.x, t * bracketR.d.y);\n\t\tset.push(indexPath);\n\t}\n\tif (lowerIndexText)\n\t\trenderIndex(lowerIndexText, 0.5);\n\tif (upperIndexText)\n\t\trenderIndex(upperIndexText, -0.5);\n}\n\nfunction showValue(paper, pos, sg, options) {\n\tvar text = paper.text(pos.x, pos.y, sg.data.fieldValue)\n\t\t.attr({\n\t\t\tfont: options.font,\n\t\t\t'font-size': options.fontsz\n\t\t});\n\tvar box = text.getBBox();\n\tvar rect = paper.rect(box.x - 1, box.y - 1, box.width + 2, box.height + 2, 3, 3);\n\trect = sg.selected ?\n\t\trect.attr(options.selectionStyle) :\n\t\trect.attr({ fill: '#fff', stroke: '#fff' });\n\tvar st = paper.set();\n\tst.push(\n\t\trect,\n\t\ttext.toFront()\n\t);\n\treturn st;\n}\n\nfunction drawGroupDat(restruct, sgroup) {\n\tconst render = restruct.render;\n\n\t// NB: we did not pass xbonds parameter to the backetPos method above,\n\t// so the result will be in the regular coordinate system\n\n\tbracketPos(sgroup, render, restruct.molecule);\n\tsgroup.areas = sgroup.bracketBox ? [sgroup.bracketBox] : [];\n\n\tif (sgroup.pp === null)\n\t\tsgroup.pp = definePP(restruct, sgroup);\n\n\treturn sgroup.data.attached ? drawAttachedDat(restruct, sgroup) : drawAbsoluteDat(restruct, sgroup);\n}\n\nfunction definePP(restruct, sgroup) {\n\tlet topLeftPoint = sgroup.bracketBox.p1.add(new Vec2(0.5, 0.5));\n\tconst sgroups = Array.from(restruct.molecule.sgroups.values());\n\tfor (let i = 0; i < restruct.molecule.sgroups.size; ++i) {\n\t\tif (!descriptorIntersects(sgroups, topLeftPoint))\n\t\t\tbreak;\n\n\t\ttopLeftPoint = topLeftPoint.add(new Vec2(0, 0.5));\n\t}\n\n\treturn topLeftPoint;\n}\n\nfunction descriptorIntersects(sgroups, topLeftPoint) {\n\treturn sgroups.some((sg) => {\n\t\tif (!sg.pp)\n\t\t\treturn false;\n\n\t\tconst sgBottomRightPoint = sg.pp.add(new Vec2(0.5, 0.5));\n\t\tconst bottomRightPoint = topLeftPoint.add(new Vec2(0.5, 0.5));\n\n\t\treturn Box2Abs.segmentIntersection(sg.pp, sgBottomRightPoint, topLeftPoint, bottomRightPoint);\n\t});\n}\n\nfunction drawAbsoluteDat(restruct, sgroup) {\n\tconst render = restruct.render;\n\tconst options = render.options;\n\tconst paper = render.paper;\n\tconst set = paper.set();\n\n\tconst ps = sgroup.pp.scaled(options.scale);\n\tconst name = showValue(paper, ps, sgroup, options);\n\tconst box = util.relBox(name.getBBox());\n\n\tname.translateAbs(0.5 * box.width, -0.5 * box.height);\n\tset.push(name);\n\n\tconst sbox = Box2Abs.fromRelBox(util.relBox(name.getBBox()));\n\tsgroup.dataArea = sbox.transform(scale.scaled2obj, render.options);\n\n\tif (!restruct.sgroupData.has(sgroup.id))\n\t\trestruct.sgroupData.set(sgroup.id, new ReDataSGroupData(sgroup));\n\n\treturn set;\n}\n\nfunction drawAttachedDat(restruct, sgroup) {\n\tconst render = restruct.render;\n\tconst options = render.options;\n\tconst paper = render.paper;\n\tconst set = paper.set();\n\n\tSGroup.getAtoms(restruct, sgroup).forEach((aid) => {\n\t\tconst atom = restruct.atoms.get(aid);\n\t\tconst p = scale.obj2scaled(atom.a.pp, options);\n\t\tconst bb = atom.visel.boundingBox;\n\n\t\tif (bb !== null)\n\t\t\tp.x = Math.max(p.x, bb.p1.x);\n\n\t\tp.x += options.lineWidth; // shift a bit to the right\n\n\t\tconst nameI = showValue(paper, p, sgroup, options);\n\t\tconst boxI = util.relBox(nameI.getBBox());\n\n\t\tnameI.translateAbs(0.5 * boxI.width, -0.3 * boxI.height);\n\t\tset.push(nameI);\n\n\t\tlet sboxI = Box2Abs.fromRelBox(util.relBox(nameI.getBBox()));\n\t\tsboxI = sboxI.transform(scale.scaled2obj, render.options);\n\t\tsgroup.areas.push(sboxI);\n\t});\n\n\treturn set;\n}\n\nfunction bracketPos(sg, render, mol, xbonds) { // eslint-disable-line max-statements\n\tvar atoms = sg.atoms;\n\n\tif (!xbonds || xbonds.length !== 2) {\n\t\tsg.bracketDir = new Vec2(1, 0);\n\t} else {\n\t\tvar p1 = mol.bonds.get(xbonds[0]).getCenter(mol);\n\t\tvar p2 = mol.bonds.get(xbonds[1]).getCenter(mol);\n\t\tsg.bracketDir = Vec2.diff(p2, p1).normalized();\n\t}\n\tvar d = sg.bracketDir;\n\n\tvar bb = null;\n\tvar contentBoxes = [];\n\n\tatoms.forEach((aid) => {\n\t\tvar atom = mol.atoms.get(aid);\n\t\tvar bba = render ? render.ctab.atoms.get(aid).visel.boundingBox : null;\n\t\tif (!bba) {\n\t\t\tvar pos = new Vec2(atom.pp);\n\t\t\tvar ext = new Vec2(0.05 * 3, 0.05 * 3);\n\t\t\tbba = new Box2Abs(pos, pos).extend(ext, ext);\n\t\t} else {\n\t\t\tbba = bba.translate((render.options.offset || new Vec2()).negated()).transform(scale.scaled2obj, render.options);\n\t\t}\n\t\tcontentBoxes.push(bba);\n\t});\n\tmol.sGroupForest.children.get(sg.id).forEach((sgid) => {\n\t\tvar bba = render.ctab.sgroups.get(sgid).visel.boundingBox;\n\t\tbba = bba.translate((render.options.offset || new Vec2()).negated()).transform(scale.scaled2obj, render.options);\n\t\tcontentBoxes.push(bba);\n\t});\n\tcontentBoxes.forEach((bba) => {\n\t\tvar bbb = null;\n\t\t[bba.p0.x, bba.p1.x].forEach((x) => {\n\t\t\t[bba.p0.y, bba.p1.y].forEach((y) => {\n\t\t\t\tvar v = new Vec2(x, y);\n\t\t\t\tvar p = new Vec2(Vec2.dot(v, d), Vec2.dot(v, d.rotateSC(1, 0)));\n\t\t\t\tbbb = (bbb === null) ? new Box2Abs(p, p) : bbb.include(p);\n\t\t\t});\n\t\t});\n\t\tbb = (bb === null) ? bbb : Box2Abs.union(bb, bbb);\n\t});\n\tvar vext = new Vec2(0.2, 0.4);\n\tif (bb !== null) bb = bb.extend(vext, vext);\n\tsg.bracketBox = bb;\n}\n\nfunction getBracketParameters(mol, xbonds, atomSet, bb, d, render, id) { // eslint-disable-line max-params\n\tfunction BracketParams(c, d, w, h) {\n\t\tthis.c = c;\n\t\tthis.d = d;\n\t\tthis.n = d.rotateSC(1, 0);\n\t\tthis.w = w;\n\t\tthis.h = h;\n\t}\n\tvar brackets = [];\n\tvar n = d.rotateSC(1, 0);\n\tif (xbonds.length < 2) {\n\t\t(function () {\n\t\t\td = d || new Vec2(1, 0);\n\t\t\tn = n || d.rotateSC(1, 0);\n\t\t\tvar bracketWidth = Math.min(0.25, bb.sz().x * 0.3);\n\t\t\tvar cl = Vec2.lc2(d, bb.p0.x, n, 0.5 * (bb.p0.y + bb.p1.y));\n\t\t\tvar cr = Vec2.lc2(d, bb.p1.x, n, 0.5 * (bb.p0.y + bb.p1.y));\n\t\t\tvar bracketHeight = bb.sz().y;\n\n\t\t\tbrackets.push(new BracketParams(cl, d.negated(), bracketWidth, bracketHeight), new BracketParams(cr, d, bracketWidth, bracketHeight));\n\t\t}());\n\t} else if (xbonds.length === 2) {\n\t\t(function () { // eslint-disable-line max-statements\n\t\t\tvar b1 = mol.bonds.get(xbonds[0]);\n\t\t\tvar b2 = mol.bonds.get(xbonds[1]);\n\t\t\tvar cl0 = b1.getCenter(mol);\n\t\t\tvar cr0 = b2.getCenter(mol);\n\t\t\tvar tl = -1;\n\t\t\tvar tr = -1;\n\t\t\tvar tt = -1;\n\t\t\tvar tb = -1;\n\t\t\tvar cc = Vec2.centre(cl0, cr0);\n\t\t\tvar dr = Vec2.diff(cr0, cl0).normalized();\n\t\t\tvar dl = dr.negated();\n\t\t\tvar dt = dr.rotateSC(1, 0);\n\t\t\tvar db = dt.negated();\n\n\t\t\tmol.sGroupForest.children.get(id).forEach((sgid) => {\n\t\t\t\tvar bba = render.ctab.sgroups.get(sgid).visel.boundingBox;\n\t\t\t\tbba = bba.translate((render.options.offset || new Vec2()).negated()).transform(scale.scaled2obj, render.options);\n\t\t\t\ttl = Math.max(tl, util.shiftRayBox(cl0, dl, bba));\n\t\t\t\ttr = Math.max(tr, util.shiftRayBox(cr0, dr, bba));\n\t\t\t\ttt = Math.max(tt, util.shiftRayBox(cc, dt, bba));\n\t\t\t\ttb = Math.max(tb, util.shiftRayBox(cc, db, bba));\n\t\t\t}, this);\n\t\t\ttl = Math.max(tl + 0.2, 0);\n\t\t\ttr = Math.max(tr + 0.2, 0);\n\t\t\ttt = Math.max(Math.max(tt, tb) + 0.1, 0);\n\t\t\tvar bracketWidth = 0.25;\n\t\t\tvar bracketHeight = 1.5 + tt;\n\t\t\tbrackets.push(new BracketParams(cl0.addScaled(dl, tl), dl, bracketWidth, bracketHeight),\n\t\t\t\tnew BracketParams(cr0.addScaled(dr, tr), dr, bracketWidth, bracketHeight));\n\t\t}());\n\t} else {\n\t\t(function () {\n\t\t\tfor (var i = 0; i < xbonds.length; ++i) {\n\t\t\t\tvar b = mol.bonds.get(xbonds[i]);\n\t\t\t\tvar c = b.getCenter(mol);\n\t\t\t\tvar d = atomSet.has(b.begin) ? b.getDir(mol) : b.getDir(mol).negated();\n\t\t\t\tbrackets.push(new BracketParams(c, d, 0.2, 1.0));\n\t\t\t}\n\t\t}());\n\t}\n\treturn brackets;\n}\n\nReSGroup.prototype.drawHighlight = function (render) { // eslint-disable-line max-statements\n\tvar options = render.options;\n\tvar paper = render.paper;\n\tvar sg = this.item;\n\tvar bb = sg.bracketBox.transform(scale.obj2scaled, options);\n\tvar lw = options.lineWidth;\n\tvar vext = new Vec2(lw * 4, lw * 6);\n\tbb = bb.extend(vext, vext);\n\tvar d = sg.bracketDir,\n\t\tn = d.rotateSC(1, 0);\n\tvar a0 = Vec2.lc2(d, bb.p0.x, n, bb.p0.y);\n\tvar a1 = Vec2.lc2(d, bb.p0.x, n, bb.p1.y);\n\tvar b0 = Vec2.lc2(d, bb.p1.x, n, bb.p0.y);\n\tvar b1 = Vec2.lc2(d, bb.p1.x, n, bb.p1.y);\n\n\tvar set = paper.set();\n\tsg.highlighting = paper\n\t\t.path('M{0},{1}L{2},{3}L{4},{5}L{6},{7}L{0},{1}', tfx(a0.x), tfx(a0.y), tfx(a1.x), tfx(a1.y), tfx(b1.x), tfx(b1.y), tfx(b0.x), tfx(b0.y))\n\t\t.attr(options.highlightStyle);\n\tset.push(sg.highlighting);\n\n\tSGroup.getAtoms(render.ctab.molecule, sg).forEach((aid) => {\n\t\tset.push(render.ctab.atoms.get(aid).makeHighlightPlate(render));\n\t}, this);\n\tSGroup.getBonds(render.ctab.molecule, sg).forEach((bid) => {\n\t\tset.push(render.ctab.bonds.get(bid).makeHighlightPlate(render));\n\t}, this);\n\trender.ctab.addReObjectPath('highlighting', this.visel, set);\n};\n\nReSGroup.prototype.show = function (restruct) {\n\tvar render = restruct.render;\n\tvar sgroup = this.item;\n\tif (sgroup.data.fieldName !== 'MRV_IMPLICIT_H') {\n\t\tvar remol = render.ctab;\n\t\tvar path = this.draw(remol, sgroup);\n\t\trestruct.addReObjectPath('data', this.visel, path, null, true);\n\t\tthis.setHighlight(this.highlight, render); // TODO: fix this\n\t}\n};\n\nexport default ReSGroup;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n// Visel is a shorthand for VISual ELement\n// It corresponds to a visualization (i.e. set of paths) of an atom or a bond.\nimport Box2Abs from '../../util/box2abs';\nimport Vec2 from '../../util/vec2';\n\nfunction Visel(type) {\n\tthis.type = type;\n\tthis.paths = [];\n\tthis.boxes = [];\n\tthis.boundingBox = null;\n}\n\nVisel.prototype.add = function (path, bb, ext) {\n\tthis.paths.push(path);\n\tif (bb) {\n\t\tthis.boxes.push(bb);\n\t\tthis.boundingBox = this.boundingBox == null ? bb : Box2Abs.union(this.boundingBox, bb);\n\t}\n\tif (ext)\n\t\tthis.exts.push(ext);\n};\n\nVisel.prototype.clear = function () {\n\tthis.paths = [];\n\tthis.boxes = [];\n\tthis.exts = [];\n\tthis.boundingBox = null;\n};\n\nVisel.prototype.translate = function (x, y) {\n\tif (arguments.length > 2) // TODO: replace to debug time assert\n\t\tthrow new Error('One vector or two scalar arguments expected');\n\tif (y === undefined) {\n\t\tthis.translate(x.x, x.y);\n\t} else {\n\t\tvar delta = new Vec2(x, y);\n\t\tfor (var i = 0; i < this.paths.length; ++i)\n\t\t\tthis.paths[i].translateAbs(x, y);\n\t\tfor (var j = 0; j < this.boxes.length; ++j)\n\t\t\tthis.boxes[j] = this.boxes[j].translate(delta);\n\t\tif (this.boundingBox !== null)\n\t\t\tthis.boundingBox = this.boundingBox.translate(delta);\n\t}\n};\n\nexport default Visel;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport Vec2 from '../util/vec2';\n\nfunction tfx(v) {\n\treturn parseFloat(v).toFixed(8);\n}\n\nfunction relBox(box) {\n\treturn {\n\t\tx: box.x,\n\t\ty: box.y,\n\t\twidth: box.width,\n\t\theight: box.height\n\t};\n}\n\n/**\n * Finds intersection of a ray and a box and\n * Returns the shift magnitude to avoid it\n * @param p { Vec2 }\n * @param d { Vec2 }\n * @param bb { Box2Abs }\n */\nfunction shiftRayBox(p, d, bb) {\n\tconsole.assert(!!p);\n\tconsole.assert(!!d);\n\tconsole.assert(!!bb);\n\n\t// four corner points of the box\n\tconst b = [bb.p0, new Vec2(bb.p1.x, bb.p0.y),\n\t\tbb.p1, new Vec2(bb.p0.x, bb.p1.y)];\n\n\tconst r = b.map(v => v.sub(p)); // b relative to p\n\n\td = d.normalized();\n\n\tconst rc = r.map(v => Vec2.cross(v, d)); // cross prods\n\tconst rd = r.map(v => Vec2.dot(v, d)); // dot prods\n\n\t// find foremost points on the right and on the left of the ray\n\tlet pid = -1;\n\tlet nid = -1;\n\n\tfor (let i = 0; i < 4; ++i) {\n\t\tif (rc[i] > 0) {\n\t\t\tif (pid < 0 || rd[pid] < rd[i])\n\t\t\t\tpid = i;\n\t\t} else if (nid < 0 || rd[nid] < rd[i]) {\n\t\t\tnid = i;\n\t\t}\n\t}\n\n\tif (nid < 0 || pid < 0) // no intersection, no shift\n\t\treturn 0;\n\n\t// check the order\n\tconst id0 = rd[pid] > rd[nid] ? nid : pid;\n\tconst id1 = rd[pid] > rd[nid] ? pid : nid;\n\n\t// simple proportion to calculate the shift\n\t/* eslint-disable no-mixed-operators*/\n\treturn rd[id0] + Math.abs(rc[id0]) * (rd[id1] - rd[id0]) /\n\t\t(Math.abs(rc[id0]) + Math.abs(rc[id1]));\n\t/* eslint-enable no-mixed-operators*/\n}\n\nexport default {\n\ttfx,\n\trelBox,\n\tshiftRayBox\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nexport const basic = ['H', 'C', 'N', 'O', 'S', 'P',\n\t'F', 'Cl', 'Br', 'I'];\n\nexport const atomCuts = {\n\tH: 'h',\n\tC: 'c',\n\tN: 'n',\n\tO: 'o',\n\tS: 's',\n\tP: 'p',\n\tF: 'f',\n\tCl: 'Shift+c',\n\tBr: 'Shift+b',\n\tI: 'i',\n\tA: 'a'\n};\n\nexport default Object.keys(atomCuts).reduce((res, label) => {\n\tres[`atom-${label.toLowerCase()}`] = {\n\t\ttitle: `Atom ${label}`,\n\t\tshortcut: atomCuts[label],\n\t\taction: {\n\t\t\ttool: 'atom',\n\t\t\topts: { label }\n\t\t}\n\t};\n\treturn res;\n}, {});\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport molfile from '../../chem/molfile';\n\nexport default {\n\t// original: for dev purposes\n\t'force-update': {\n\t\tshortcut: 'Ctrl+Shift+r',\n\t\taction: (editor) => {\n\t\t\teditor.update(true);\n\t\t}\n\t},\n\t'qs-serialize': {\n\t\tshortcut: 'Alt+Shift+r',\n\t\taction: (editor) => {\n\t\t\tconst molStr = molfile.stringify(editor.struct());\n\t\t\tconst molQs = 'mol=' + encodeURIComponent(molStr).replace(/%20/g, '+');\n\t\t\tconst qs = document.location.search;\n\t\t\tdocument.location.search = !qs ? '?' + molQs : // eslint-disable-line\n\t\t\t\tqs.search('mol=') === -1 ? qs + '&' + molQs :\n\t\t\t\t\tqs.replace(/mol=[^&$]*/, molQs);\n\t\t}\n\t}\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\n/* eslint-disable no-shadow */\n\nimport tools from './tools';\nimport atoms from './atoms';\nimport zoom from './zoom';\nimport server from './server';\nimport debug from './debug';\nimport templates from './templates';\nimport { exec } from '../component/cliparea';\n\nexport default {\n\tnew: {\n\t\tshortcut: 'Mod+Delete',\n\t\ttitle: 'Clear Canvas',\n\t\taction: {\n\t\t\tthunk: (dispatch, getState) => {\n\t\t\t\tconst editor = getState().editor;\n\t\t\t\tif (!editor.struct().isBlank())\n\t\t\t\t\teditor.struct(null);\n\t\t\t\tdispatch({ type: 'ACTION', action: tools['select-lasso'].action });\n\t\t\t}\n\t\t}\n\t},\n\topen: {\n\t\tshortcut: 'Mod+o',\n\t\ttitle: 'Open…',\n\t\taction: { dialog: 'open' }\n\t},\n\tsave: {\n\t\tshortcut: 'Mod+s',\n\t\ttitle: 'Save As…',\n\t\taction: { dialog: 'save' }\n\t},\n\tundo: {\n\t\tshortcut: 'Mod+z',\n\t\ttitle: 'Undo',\n\t\taction: (editor) => {\n\t\t\teditor.undo();\n\t\t},\n\t\tdisabled: editor => (\n\t\t\teditor.historySize().undo === 0\n\t\t)\n\t},\n\tredo: {\n\t\tshortcut: ['Mod+Shift+z', 'Mod+y'],\n\t\ttitle: 'Redo',\n\t\taction: (editor) => {\n\t\t\teditor.redo();\n\t\t},\n\t\tdisabled: editor => (\n\t\t\teditor.historySize().redo === 0\n\t\t)\n\t},\n\tcut: {\n\t\tshortcut: 'Mod+x',\n\t\ttitle: 'Cut',\n\t\taction: () => {\n\t\t\texec('cut') || dontClipMessage('Cut'); // eslint-disable-line no-unused-expressions\n\t\t},\n\t\tdisabled: editor => !hasSelection(editor)\n\t},\n\tcopy: {\n\t\tshortcut: 'Mod+c',\n\t\ttitle: 'Copy',\n\t\taction: () => {\n\t\t\texec('copy') || dontClipMessage('Copy'); // eslint-disable-line no-unused-expressions\n\t\t},\n\t\tdisabled: editor => !hasSelection(editor)\n\t},\n\tpaste: {\n\t\tshortcut: 'Mod+v',\n\t\ttitle: 'Paste',\n\t\taction: () => {\n\t\t\texec('paste') || dontClipMessage('Paste'); // eslint-disable-line no-unused-expressions\n\t\t},\n\t\tselected: ({ actions }) => (\n\t\t\tactions && // TMP\n\t\t\t\tactions.active && actions.active.tool === 'paste'\n\t\t)\n\t},\n\tsettings: {\n\t\ttitle: 'Settings',\n\t\taction: { dialog: 'settings' }\n\t},\n\thelp: {\n\t\tshortcut: ['?', '&', 'Shift+/'],\n\t\ttitle: 'Help',\n\t\taction: { dialog: 'help' }\n\t},\n\tabout: {\n\t\ttitle: 'About',\n\t\taction: { dialog: 'about' }\n\t},\n\t'reaction-automap': {\n\t\ttitle: 'Reaction Auto-Mapping Tool',\n\t\taction: { dialog: 'automap' },\n\t\tdisabled: (editor, server, options) => !options.app.server || !editor.struct().hasRxnArrow()\n\t},\n\t'period-table': {\n\t\ttitle: 'Periodic Table',\n\t\taction: { dialog: 'period-table' }\n\t},\n\t'select-all': {\n\t\ttitle: 'Select All',\n\t\tshortcut: 'Mod+a',\n\t\taction: {\n\t\t\tthunk: (dispatch, getState) => {\n\t\t\t\tgetState().editor.selection('all');\n\t\t\t\tconst selectionTool = getState().toolbar.visibleTools.select;\n\t\t\t\tdispatch({ type: 'ACTION', action: tools[selectionTool].action });\n\t\t\t}\n\t\t}\n\t},\n\t'deselect-all': {\n\t\ttitle: 'Deselect All',\n\t\tshortcut: 'Mod+Shift+a',\n\t\taction: (editor) => {\n\t\t\teditor.selection(null);\n\t\t}\n\t},\n\t'select-descriptors': {\n\t\ttitle: 'Select descriptors',\n\t\tshortcut: 'Mod+d',\n\t\taction: {\n\t\t\tthunk: (dispatch, getState) => {\n\t\t\t\tconst selectionTool = getState().toolbar.visibleTools.select;\n\t\t\t\tconst editor = getState().editor;\n\t\t\t\teditor.alignDescriptors();\n\t\t\t\teditor.selection('descriptors');\n\t\t\t\tdispatch({ type: 'ACTION', action: tools[selectionTool].action });\n\t\t\t}\n\t\t}\n\t},\n\t...server,\n\t...debug,\n\t...tools,\n\t...atoms,\n\t...zoom,\n\t...templates\n};\n\nfunction hasSelection(editor) {\n\tconst selection = editor.selection();\n\treturn selection && // if not only sgroupData selected\n\t\t(Object.keys(selection).length > 1 || !selection.sgroupData);\n}\n\nfunction dontClipMessage(title) {\n\talert('This action is unavailable via menu.\\n' + // eslint-disable-line no-undef\n\t\t'Instead, use shortcut to ' + title + '.');\n}\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { serverTransform } from '../state/server';\n\nexport default {\n\tlayout: {\n\t\tshortcut: 'Mod+l',\n\t\ttitle: 'Layout',\n\t\taction: {\n\t\t\tthunk: serverTransform('layout')\n\t\t},\n\t\tdisabled: (editor, server, options) => !options.app.server\n\t},\n\tclean: {\n\t\tshortcut: 'Mod+Shift+l',\n\t\ttitle: 'Clean Up',\n\t\taction: {\n\t\t\tthunk: serverTransform('clean')\n\t\t},\n\t\tdisabled: (editor, server, options) => !options.app.server\n\t},\n\tarom: {\n\t\ttitle: 'Aromatize',\n\t\taction: {\n\t\t\tthunk: serverTransform('aromatize')\n\t\t},\n\t\tdisabled: (editor, server, options) => !options.app.server\n\t},\n\tdearom: {\n\t\ttitle: 'Dearomatize',\n\t\taction: {\n\t\t\tthunk: serverTransform('dearomatize')\n\t\t},\n\t\tdisabled: (editor, server, options) => !options.app.server\n\t},\n\tcip: {\n\t\tshortcut: 'Mod+p',\n\t\ttitle: 'Calculate CIP',\n\t\taction: {\n\t\t\tthunk: serverTransform('calculateCip')\n\t\t},\n\t\tdisabled: (editor, server, options) => !options.app.server\n\t},\n\tcheck: {\n\t\ttitle: 'Check Structure',\n\t\taction: { dialog: 'check' },\n\t\tdisabled: (editor, server, options) => !options.app.server\n\t},\n\tanalyse: {\n\t\ttitle: 'Calculated Values',\n\t\taction: { dialog: 'analyse' },\n\t\tdisabled: (editor, server, options) => !options.app.server\n\t},\n\trecognize: {\n\t\ttitle: 'Recognize Molecule',\n\t\taction: { dialog: 'recognize' },\n\t\tdisabled: (editor, server, options) => !options.app.server\n\t},\n\tmiew: {\n\t\ttitle: '3D Viewer',\n\t\taction: { dialog: 'miew' },\n\t\tdisabled: () => !window.Miew\n\t}\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport templates from '../data/templates';\n\nconst templateLib = {\n\t'template-lib': {\n\t\tshortcut: 'Shift+t',\n\t\ttitle: 'Custom Templates',\n\t\taction: { dialog: 'templates' },\n\t\tdisabled: (editor, server, options) => !options.app.templates\n\t}\n};\n\nexport default templates.reduce((res, struct, i) => {\n\tres[`template-${i}`] = {\n\t\ttitle: `${struct.name}`,\n\t\tshortcut: 't',\n\t\taction: {\n\t\t\ttool: 'template',\n\t\t\topts: { struct }\n\t\t}\n\t};\n\treturn res;\n}, templateLib);\n\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { bond as bondSchema } from '../data/schema/struct-schema';\nimport { toBondType } from '../data/convert/structconv';\n\nconst toolActions = {\n\t'select-lasso': {\n\t\ttitle: 'Lasso Selection',\n\t\tshortcut: 'Escape',\n\t\taction: { tool: 'select', opts: 'lasso' }\n\t},\n\t'select-rectangle': {\n\t\ttitle: 'Rectangle Selection',\n\t\tshortcut: 'Escape',\n\t\taction: { tool: 'select', opts: 'rectangle' }\n\t},\n\t'select-fragment': {\n\t\ttitle: 'Fragment Selection',\n\t\tshortcut: 'Escape',\n\t\taction: { tool: 'select', opts: 'fragment' }\n\t},\n\terase: {\n\t\ttitle: 'Erase',\n\t\tshortcut: ['Delete', 'Backspace'],\n\t\taction: { tool: 'eraser', opts: 1 } // TODO last selector mode is better\n\t},\n\tchain: {\n\t\ttitle: 'Chain',\n\t\taction: { tool: 'chain' }\n\t},\n\t'chiral-flag': {\n\t\ttitle: 'Chiral Flag',\n\t\taction: { tool: 'chiralFlag' },\n\t\tselected: editor => editor.struct().isChiral\n\t},\n\t'charge-plus': {\n\t\tshortcut: '5',\n\t\ttitle: 'Charge Plus',\n\t\taction: { tool: 'charge', opts: 1 }\n\t},\n\t'charge-minus': {\n\t\tshortcut: '5',\n\t\ttitle: 'Charge Minus',\n\t\taction: { tool: 'charge', opts: -1 }\n\t},\n\t'transform-rotate': {\n\t\tshortcut: 'Alt+r',\n\t\ttitle: 'Rotate Tool',\n\t\taction: { tool: 'rotate' }\n\t},\n\t'transform-flip-h': {\n\t\tshortcut: 'Alt+h',\n\t\ttitle: 'Horizontal Flip',\n\t\taction: { tool: 'rotate', opts: 'horizontal' }\n\t},\n\t'transform-flip-v': {\n\t\tshortcut: 'Alt+v',\n\t\ttitle: 'Vertical Flip',\n\t\taction: { tool: 'rotate', opts: 'vertical' }\n\t},\n\tsgroup: {\n\t\tshortcut: 'Mod+g',\n\t\ttitle: 'S-Group',\n\t\taction: { tool: 'sgroup' }\n\t},\n\t'sgroup-data': {\n\t\tshortcut: 'Mod+g',\n\t\ttitle: 'Data S-Group',\n\t\taction: { tool: 'sgroup', opts: 'DAT' }\n\t},\n\t'reaction-arrow': {\n\t\ttitle: 'Reaction Arrow Tool',\n\t\taction: { tool: 'reactionarrow' }\n\t},\n\t'reaction-plus': {\n\t\ttitle: 'Reaction Plus Tool',\n\t\taction: { tool: 'reactionplus' }\n\t},\n\t'reaction-map': {\n\t\ttitle: 'Reaction Mapping Tool',\n\t\taction: { tool: 'reactionmap' }\n\t},\n\t'reaction-unmap': {\n\t\ttitle: 'Reaction Unmapping Tool',\n\t\taction: { tool: 'reactionunmap' }\n\t},\n\t'rgroup-label': {\n\t\tshortcut: 'Mod+r',\n\t\ttitle: 'R-Group Label Tool',\n\t\taction: { tool: 'rgroupatom' }\n\t},\n\t'rgroup-fragment': {\n\t\tshortcut: ['Mod+Shift+r', 'Mod+r'],\n\t\ttitle: 'R-Group Fragment Tool',\n\t\taction: { tool: 'rgroupfragment' }\n\t},\n\t'rgroup-attpoints': {\n\t\tshortcut: 'Mod+r',\n\t\ttitle: 'Attachment Point Tool',\n\t\taction: { tool: 'apoint' }\n\t}\n};\n\nconst bondCuts = {\n\tsingle: '1',\n\tdouble: '2',\n\ttriple: '3',\n\tup: '1',\n\tdown: '1',\n\tupdown: '1',\n\tcrossed: '2',\n\tany: '0',\n\taromatic: '4'\n};\n\nconst typeSchema = bondSchema.properties.type;\n\nexport default typeSchema.enum.reduce((res, type, i) => {\n\tres[`bond-${type}`] = {\n\t\ttitle: `${typeSchema.enumNames[i]} Bond`,\n\t\tshortcut: bondCuts[type],\n\t\taction: {\n\t\t\ttool: 'bond',\n\t\t\topts: toBondType(type)\n\t\t}\n\t};\n\treturn res;\n}, toolActions);\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { findIndex, findLastIndex } from 'lodash/fp';\n\nexport const zoomList = [\n\t0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1,\n\t1.1, 1.2, 1.3, 1.4, 1.5, 1.7, 2, 2.5, 3, 3.5, 4\n];\n\nexport default {\n\tzoom: {\n\t\tselected: editor => editor.zoom()\n\t},\n\t'zoom-out': {\n\t\tshortcut: ['-', '_', 'Shift+-'],\n\t\ttitle: 'Zoom Out',\n\t\tdisabled: editor => (\n\t\t\teditor.zoom() <= zoomList[0] // unsave\n\t\t),\n\t\taction: (editor) => {\n\t\t\tconst zoom = editor.zoom();\n\t\t\tconst i = findIndex(z => z >= zoom, zoomList);\n\t\t\teditor.zoom(\n\t\t\t\tzoomList[(zoomList[i] === zoom && i > 0) ? i - 1 : i]\n\t\t\t);\n\t\t}\n\t},\n\t'zoom-in': {\n\t\tshortcut: ['+', '=', 'Shift+='],\n\t\ttitle: 'Zoom In',\n\t\tdisabled: editor => (\n\t\t\tzoomList[zoomList.length - 1] <= editor.zoom()\n\t\t),\n\t\taction: (editor) => {\n\t\t\tconst zoom = editor.zoom();\n\t\t\tconst i = findLastIndex(z => z <= zoom, zoomList);\n\t\t\teditor.zoom(\n\t\t\t\tzoomList[(zoomList[i] === zoom && i < zoomList.length - 1) ? i + 1 : i]\n\t\t\t);\n\t\t}\n\t}\n};\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { connect } from 'preact-redux';\nimport initEditor from '../state/editor';\nimport StructEditor from '../component/structeditor';\n\nconst AppEditor = connect(\n\tstate => ({\n\t\toptions: state.options.settings\n\t}),\n\tdispatch => dispatch(initEditor)\n)(StructEditor);\n\nexport default AppEditor;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { h, Component } from 'preact';\nimport { connect } from 'preact-redux';\n\nimport ClipArea from '../component/cliparea';\n\nimport { initIcons } from '../state/toolbar';\nimport { initClipboard } from '../state/hotkeys';\nimport { initTmplLib } from '../state/templates';\n\nexport const AppHidden = connect(\n\tnull,\n\tdispatch => ({\n\t\tonInitTmpls: cacheEl => initTmplLib(dispatch, '', cacheEl)\n\t})\n)(class extends Component {\n\tcomponentDidMount() {\n\t\tthis.props.onInitTmpls(this.cacheEl);\n\t\tinitIcons(this.cacheEl);\n\t}\n\trender = () => (
{ this.cacheEl = c; }} />)\n});\n\nexport const AppCliparea = connect(\n\tnull,\n\tdispatch => (dispatch(initClipboard))\n)(ClipArea);\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { h, Component, render } from 'preact';\nimport { Provider, connect } from 'preact-redux';\n\nimport { AppCliparea, AppHidden } from './hidden';\nimport AppEditor from './editor';\nimport AppModal from './modal';\nimport Toolbar from './toolbar';\n\nimport createStore, { onAction, load } from '../state';\nimport { checkServer } from '../state/server';\nimport { initKeydownListener } from '../state/hotkeys';\nimport { initResize } from '../state/toolbar';\n\nconst App = connect(\n\tnull,\n\t{ onAction, checkServer }\n)(class extends Component { // eslint-disable-line\n\tcomponentDidMount() {\n\t\tthis.props.checkServer();\n\t}\n\trender = props => (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t)\n});\n\nfunction init(el, options, server) {\n\tconst store = createStore(options, server);\n\tstore.dispatch(initKeydownListener(el));\n\tstore.dispatch(initResize());\n\n\trender((\n\t\t\n\t\t\t\n\t\t\n\t), el);\n\n\treturn {\n\t\tload: (structStr, opts) => store.dispatch(load(structStr, opts))\n\t};\n}\n\nexport default init;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { h } from 'preact';\nimport { omit } from 'lodash/fp';\nimport { connect } from 'preact-redux';\nimport modals from '../dialog';\n\nconst mapStateToProps = state => ({\n\tmodal: state.modal\n});\n\nconst mapDispatchToProps = dispatch => ({\n\tonOk: (res) => {\n\t\tconsole.info('Output:', res);\n\t\tdispatch({ type: 'MODAL_CLOSE' });\n\t},\n\tonCancel: () => {\n\t\tdispatch({ type: 'MODAL_CLOSE' });\n\t}\n});\n\nconst mergeProps = (stateProps, dispatchProps) => {\n\tconst prop = stateProps.modal && stateProps.modal.prop;\n\tconst initProps = prop ? omit(['onResult', 'onCancel'], prop) : {};\n\treturn {\n\t\tmodal: stateProps.modal,\n\t\t...initProps,\n\t\tonOk: (res) => {\n\t\t\tif (prop && prop.onResult) prop.onResult(res);\n\t\t\tdispatchProps.onOk(res);\n\t\t},\n\t\tonCancel: () => {\n\t\t\tif (prop && prop.onCancel) prop.onCancel();\n\t\t\tdispatchProps.onCancel();\n\t\t}\n\t};\n};\n\nconst AppModal = connect(\n\tmapStateToProps,\n\tmapDispatchToProps,\n\tmergeProps\n)(({ modal, ...props }) => {\n\tif (!modal)\n\t\treturn null;\n\n\tconst Modal = modals[modal.name];\n\n\tif (!Modal)\n\t\tthrow new Error(`There is no modal window named ${modal.name}`);\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t
\n\t);\n});\n\nexport default AppModal;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { connect } from 'preact-redux';\nimport { h } from 'preact';\n\nimport classNames from 'classnames';\n\nimport element from '../../chem/element';\nimport Atom from '../component/view/atom';\nimport Icon from '../component/view/icon';\nimport ActionMenu, { shortcutStr } from '../component/actionmenu';\n\nimport action from '../action';\nimport { atomCuts, basic as basicAtoms } from '../action/atoms';\nimport { zoomList } from '../action/zoom';\nimport templates from '../data/templates';\n\nconst mainmenu = [\n\t{\n\t\tid: 'document',\n\t\tmenu: [\n\t\t\t'new',\n\t\t\t'open',\n\t\t\t'save'\n\t\t]\n\t},\n\t{\n\t\tid: 'edit',\n\t\tmenu: [\n\t\t\t'undo',\n\t\t\t'redo',\n\t\t\t'cut',\n\t\t\t'copy',\n\t\t\t'paste'\n\t\t]\n\t},\n\t{\n\t\tid: 'zoom',\n\t\tmenu: [\n\t\t\t'zoom-in',\n\t\t\t'zoom-out',\n\t\t\t{\n\t\t\t\tid: 'zoom-list',\n\t\t\t\tcomponent: ZoomList\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\tid: 'process',\n\t\tmenu: [\n\t\t\t'layout',\n\t\t\t'clean',\n\t\t\t'arom',\n\t\t\t'dearom',\n\t\t\t'cip',\n\t\t\t'check',\n\t\t\t'analyse',\n\t\t\t'recognize',\n\t\t\t'miew'\n\t\t]\n\t},\n\t{\n\t\tid: 'meta',\n\t\tmenu: [\n\t\t\t'settings',\n\t\t\t'help',\n\t\t\t'about'\n\t\t]\n\t}\n];\n\nconst toolbox = [\n\t{\n\t\tid: 'select',\n\t\tmenu: [\n\t\t\t'select-lasso',\n\t\t\t'select-rectangle',\n\t\t\t'select-fragment'\n\t\t]\n\t},\n\t'erase',\n\t{\n\t\tid: 'bond',\n\t\tmenu: [\n\t\t\t{\n\t\t\t\tid: 'bond-common',\n\t\t\t\tmenu: [\n\t\t\t\t\t'bond-single',\n\t\t\t\t\t'bond-double',\n\t\t\t\t\t'bond-triple'\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'bond-stereo',\n\t\t\t\tmenu: [\n\t\t\t\t\t'bond-up',\n\t\t\t\t\t'bond-down',\n\t\t\t\t\t'bond-updown',\n\t\t\t\t\t'bond-crossed'\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'bond-query',\n\t\t\t\tmenu: [\n\t\t\t\t\t'bond-any',\n\t\t\t\t\t'bond-aromatic',\n\t\t\t\t\t'bond-singledouble',\n\t\t\t\t\t'bond-singlearomatic',\n\t\t\t\t\t'bond-doublearomatic'\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t'chain',\n\t{\n\t\tid: 'charge',\n\t\tmenu: [\n\t\t\t'charge-plus',\n\t\t\t'charge-minus'\n\t\t]\n\t},\n\t{\n\t\tid: 'transform',\n\t\tmenu: [\n\t\t\t'transform-rotate',\n\t\t\t'transform-flip-h',\n\t\t\t'transform-flip-v'\n\t\t]\n\t},\n\t'sgroup',\n\t'sgroup-data',\n\t{\n\t\tid: 'reaction',\n\t\tmenu: [\n\t\t\t'reaction-arrow',\n\t\t\t'reaction-plus',\n\t\t\t'reaction-automap',\n\t\t\t'reaction-map',\n\t\t\t'reaction-unmap'\n\t\t]\n\t},\n\t{\n\t\tid: 'rgroup',\n\t\tmenu: [\n\t\t\t'rgroup-label',\n\t\t\t'rgroup-fragment',\n\t\t\t'rgroup-attpoints'\n\t\t]\n\t}\n];\n\nconst template = [\n\t{\n\t\tid: 'template-common',\n\t\tcomponent: TemplatesList\n\t},\n\t'template-lib',\n\t'chiral-flag'\n];\n\nconst elements = [\n\t{\n\t\tid: 'atom',\n\t\tcomponent: props => AtomsList(basicAtoms, props)\n\t},\n\t{\n\t\tid: 'freq-atoms',\n\t\tcomponent: props => AtomsList(props['freqAtoms'], props)\n\n\t},\n\t'period-table'\n];\n\nconst toolbar = [\n\t{ id: 'mainmenu', menu: mainmenu },\n\t{ id: 'toolbox', menu: toolbox },\n\t{ id: 'template', menu: template },\n\t{ id: 'elements', menu: elements }\n];\n\nfunction ZoomList({ status, onAction }) {\n\tconst zoom = status.zoom && status.zoom.selected; // TMP\n\treturn (\n\t\t onAction(editor => editor.zoom(parseFloat(ev.target.value)))}\n\t\t>\n\t\t\t{\n\t\t\t\tzoomList.map(val => (\n\t\t\t\t\t\n\t\t\t\t))\n\t\t\t}\n\t\t\n\t);\n}\n\nfunction AtomsList(atoms, { active, onAction }) {\n\tconst isAtom = active && active.tool === 'atom';\n\treturn (\n\t\t\n\t\t\t{\n\t\t\t\tatoms.map((label) => {\n\t\t\t\t\tconst index = element.map[label];\n\t\t\t\t\tconst shortcut = basicAtoms.indexOf(label) > -1 ? shortcutStr(atomCuts[label]) : null;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t onAction({ tool: 'atom', opts: { label } })}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t}\n\t\t\n\t);\n}\n\nfunction TemplatesList({ active, onAction }) {\n\tconst shortcut = shortcutStr(action['template-0'].shortcut);\n\tconst isTmpl = active && active.tool === 'template';\n\treturn (\n\t\t\n\t\t\t{\n\t\t\t\ttemplates.map((struct, i) => (\n\t\t\t\t\t\n\t\t\t\t\t\t onAction({ tool: 'template', opts: { struct } })}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{struct.name}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t))\n\t\t\t}\n\t\t\n\t);\n}\n\nexport default connect(\n\tstate => ({\n\t\tactive: state.actionState && state.actionState.activeTool,\n\t\tstatus: state.actionState || {},\n\t\tfreqAtoms: state.toolbar.freqAtoms,\n\t\topened: state.toolbar.opened,\n\t\tvisibleTools: state.toolbar.visibleTools\n\t}),\t{\n\t\tonOpen: (menuName, isSelected) => ({ type: 'OPENED', data: { menuName, isSelected } })\n\t}\n)(props => (\n\t\n));\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { h } from 'preact';\n\nimport classNames from 'classnames';\n\nimport action from '../action';\nimport { hiddenAncestor } from '../state/toolbar';\nimport Icon from './view/icon';\n\nconst isMac = /Mac/.test(navigator.platform); // eslint-disable-line no-undef\nconst shortcutAliasMap = {\n\tEscape: 'Esc',\n\tDelete: 'Del',\n\tMod: isMac ? '⌘' : 'Ctrl'\n};\n\nexport function shortcutStr(shortcut) {\n\tconst key = Array.isArray(shortcut) ? shortcut[0] : shortcut;\n\treturn key.replace(/(\\b[a-z]\\b$|Mod|Escape|Delete)/g, k => shortcutAliasMap[k] || k.toUpperCase());\n}\n\nfunction isMenuOpened(currentNode) {\n\tconst parentNode = hiddenAncestor(currentNode);\n\treturn parentNode && parentNode.classList.contains('opened');\n}\n\nexport function showMenuOrButton(action, item, status, props) { // eslint-disable-line no-shadow\n\tif (typeof item !== 'object') {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\tif (item.menu) {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\treturn (item.component(props));\n}\n\nfunction ActionButton({ name, action, status = {}, onAction }) { // eslint-disable-line no-shadow\n\tconst shortcut = action.shortcut && shortcutStr(action.shortcut);\n\treturn (\n\t\t {\n\t\t\t\tif (!status.selected || isMenuOpened(this.base) || action.action.tool === 'chiralFlag') {\n\t\t\t\t\tonAction(action.action);\n\t\t\t\t\tev.stopPropagation();\n\t\t\t\t}\n\t\t\t}}\n\t\t\ttitle={shortcut ? `${action.title} (${shortcut})` : action.title}\n\t\t>\n\t\t\t{action.title}{shortcut}\n\t\t\n\t);\n}\n\nfunction ActionMenu({ name, menu, className, role, ...props }) {\n\treturn (\n\t\t\n\t\t\t{\n\t\t\t\tmenu.map(item => (\n\t\t\t\t\t openHandle(ev, props.onOpen)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{ showMenuOrButton(action, item, props.status[item], props) }\n\t\t\t\t\t\t{ item.menu && }\n\t\t\t\t\t\n\t\t\t\t))\n\t\t\t}\n\t\t\n\t);\n}\n\nfunction toolMargin(menuName, menu, visibleTools) {\n\tif (!visibleTools[menuName]) return {};\n\t// now not found better way\n\tconst iconHeight = (window.innerHeight < 600 || window.innerWidth < 1040) ? 32 : 40;\n\tlet index = menu.indexOf(visibleTools[menuName]); // first level\n\n\tif (index === -1) {\n\t\tlet tools = [];\n\t\tmenu.forEach((item) => {\n\t\t\ttools = tools.concat(item.menu);\n\t\t});\n\n\t\tindex = tools.indexOf(visibleTools[menuName]); // second level. example: `bond: bond-any`\n\t}\n\n\treturn (index !== -1) ? { marginTop: -(iconHeight * index) + 'px' } : {};\n}\n\nfunction openHandle(event, onOpen) {\n\tconst hiddenEl = hiddenAncestor(event.currentTarget);\n\tconst isSelected = event.currentTarget.classList.contains('selected');\n\n\tonOpen(hiddenEl && hiddenEl.id, isSelected);\n\tevent.stopPropagation();\n}\n\nexport default ActionMenu;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { h, Component } from 'preact';\n\nconst ieCb = window.clipboardData;\n\nclass ClipArea extends Component {\n\tcomponentDidMount() {\n\t\tconst el = this.base;\n\t\tthis.target = this.props.target || el.parentNode;\n\n\t\tthis.listeners = {\n\t\t\tmouseup: (event) => {\n\t\t\t\tif (this.props.focused() && !isFormElement(event.target))\n\t\t\t\t\tautofocus(el);\n\t\t\t},\n\t\t\tmousedown: (event) => {\n\t\t\t\tif (event.shiftKey && !isFormElement(event.target))\n\t\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\tcopy: (event) => {\n\t\t\t\tif (this.props.focused() && this.props.onCopy) {\n\t\t\t\t\tconst data = this.props.onCopy();\n\n\t\t\t\t\tif (data)\n\t\t\t\t\t\tcopy(event.clipboardData, data);\n\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcut: (event) => {\n\t\t\t\tif (this.props.focused() && this.props.onCut) {\n\t\t\t\t\tconst data = this.props.onCut();\n\n\t\t\t\t\tif (data)\n\t\t\t\t\t\tcopy(event.clipboardData, data);\n\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\tpaste: (event) => {\n\t\t\t\tif (this.props.focused() && this.props.onPaste) {\n\t\t\t\t\tconst data = paste(event.clipboardData, this.props.formats);\n\n\t\t\t\t\tif (data)\n\t\t\t\t\t\tthis.props.onPaste(data);\n\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tObject.keys(this.listeners).forEach((en) => {\n\t\t\tthis.target.addEventListener(en, this.listeners[en]);\n\t\t});\n\t}\n\n\tshouldComponentUpdate() {\n\t\treturn false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tObject.keys(this.listeners).forEach((en) => {\n\t\t\tthis.target.removeEventListener(en, this.listeners[en]);\n\t\t});\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n}\n\nfunction isFormElement(el) {\n\tif (el.tagName === 'INPUT' && el.type === 'button') return false;\n\treturn ['INPUT', 'SELECT', 'TEXTAREA', 'OPTION', 'LABEL'].includes(el.tagName);\n}\n\nfunction autofocus(cliparea) {\n\tcliparea.value = ' ';\n\tcliparea.focus();\n\tcliparea.select();\n}\n\nfunction copy(cb, data) {\n\tif (!cb && ieCb) {\n\t\tieCb.setData('text', data['text/plain']);\n\t} else {\n\t\tlet curFmt = null;\n\t\tcb.setData('text/plain', data['text/plain']);\n\t\ttry {\n\t\t\tObject.keys(data).forEach((fmt) => {\n\t\t\t\tcurFmt = fmt;\n\t\t\t\tcb.setData(fmt, data[fmt]);\n\t\t\t});\n\t\t} catch (ex) {\n\t\t\tconsole.info(`Could not write exact type ${curFmt}`);\n\t\t}\n\t}\n}\n\nfunction paste(cb, formats) {\n\tlet data = {};\n\tif (!cb && ieCb) {\n\t\tdata['text/plain'] = ieCb.getData('text');\n\t} else {\n\t\tdata['text/plain'] = cb.getData('text/plain');\n\t\tdata = formats.reduce((res, fmt) => {\n\t\t\tconst d = cb.getData(fmt);\n\t\t\tif (d)\n\t\t\t\tres[fmt] = d;\n\t\t\treturn res;\n\t\t}, data);\n\t}\n\treturn data;\n}\n\nexport const actions = ['cut', 'copy', 'paste'];\n\nexport function exec(action) {\n\tlet enabled = document.queryCommandSupported(action);\n\tif (enabled) {\n\t\ttry {\n\t\t\tenabled = document.execCommand(action) || window.ClipboardEvent || ieCb;\n\t\t} catch (ex) {\n\t\t\t// FF < 41\n\t\t\tenabled = false;\n\t\t}\n\t}\n\treturn enabled;\n}\n\nexport default ClipArea;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { h, Component } from 'preact';\n\nimport keyName from 'w3c-keyname';\n\nclass Dialog extends Component {\n\texit(mode) {\n\t\tconst { params, result = () => null,\n\t\t\tvalid = () => !!result() } = this.props;\n\t\tconst key = (mode === 'OK') ? 'onOk' : 'onCancel';\n\t\tif (params && key in params && (key !== 'onOk' || valid()))\n\t\t\tparams[key](result());\n\t}\n\tkeyDown(ev) {\n\t\tconst key = keyName(ev);\n\t\tconst active = document.activeElement;\n\t\tconst activeTextarea = active && active.tagName === 'TEXTAREA';\n\t\tif (key === 'Escape' || (key === 'Enter' && !activeTextarea)) {\n\t\t\tthis.exit(key === 'Enter' ? 'OK' : 'Cancel');\n\t\t\tev.preventDefault();\n\t\t}\n\t\tev.stopPropagation();\n\t}\n\tcomponentDidMount() {\n\t\tconst fe = this.base.querySelector(['input:not([type=checkbox]):not([type=button])', 'textarea',\n\t\t\t'[contenteditable]', 'select'].join(',')) ||\n\t\t\tthis.base.querySelector(['button.close'].join(','));\n\t\tconsole.assert(fe, 'No active buttons');\n\t\tif (fe.focus) fe.focus();\n\t}\n\n\tcomponentWillUnmount() {\n\t\t(document.querySelector('.cliparea') || document.body).focus();\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\tchildren, title, params = {},\n\t\t\tresult = () => null, valid = () => !!result(), // Hmm, dublicate.. No simple default props\n\t\t\tbuttons = ['Cancel', 'OK'], ...props\n\t\t} = this.props; // see: https://git.io/v1KR6\n\t\treturn (\n\t\t\t ev.preventDefault()}\n\t\t\t\tonKeyDown={ev => this.keyDown(ev)}\n\t\t\t\ttabIndex=\"-1\"\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t
{title}\n\t\t\t\t\t{params.onCancel && title && (\n\t\t\t\t\t\t this.exit('Cancel')}\n\t\t\t\t\t\t>×\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t{children}\n\t\t\t\t
{\n\t\t\t\t\tbuttons.map(b => (typeof b !== 'string' ?\n\t\t\t\t\t\tb : (\n\t\t\t\t\t\t\t this.exit(b)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)))\n\t\t\t\t}\n\t\t\t\t
\n\t\t\t\n\t\t);\n\t}\n}\n\nexport default Dialog;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\nimport { h } from 'preact';\nimport { xor } from 'lodash/fp';\n\nfunction oneOrMore(multipl, values, item) {\n\tif (multipl) return xor(values, [item]);\n\treturn xor(values, values.concat([item]));\n}\n\nfunction ButtonList({ value, onChange, schema, disabledIds, multiple }) {\n\tlet className;\n\treturn (\n\t\t
    \n\t\t\t{\n\t\t\t\tschema.items.enum.map((item, i) => {\n\t\t\t\t\tclassName = value.includes(item) ? 'selected' : '';\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t (onChange(oneOrMore(multiple, value, item)))}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{schema.items.enumNames[i]}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
  • \n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t}\n\t\t
\n\t);\n}\n\nexport default ButtonList;\n\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { h, Component } from 'preact';\n\nclass ComboBox extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tsuggestsHidden: true\n\t\t};\n\n\t\tthis.click = this.click.bind(this);\n\t\tthis.blur = this.blur.bind(this);\n\t\tthis.updateInput = this.updateInput.bind(this);\n\t}\n\n\tupdateInput(event) {\n\t\tconst value = (event.target.value || event.target.textContent);\n\t\tthis.setState({ suggestsHidden: true });\n\t\tthis.props.onChange(value);\n\t}\n\n\tclick() {\n\t\tthis.setState({ suggestsHidden: false });\n\t}\n\n\tblur() {\n\t\tthis.setState({ suggestsHidden: true });\n\t}\n\n\trender(props) {\n\t\tconst { value, type = 'text', schema } = props;\n\n\t\tconst suggestList = schema.enumNames\n\t\t\t.filter(item => item !== value)\n\t\t\t.map(item =>
  • {item}
  • );\n\n\t\treturn (\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t{\n\t\t\t\t\tsuggestList.length !== 0 ?\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tsuggestList\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : ''\n\t\t\t\t}\n\t\t\t
    \n\t\t);\n\t}\n}\n\nexport default ComboBox;\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport jsonschema from 'jsonschema';\nimport { h, Component } from 'preact';\nimport { connect } from 'preact-redux';\n\nimport Input from './input';\nimport { updateFormState } from '../../state/modal/form';\n\nclass Form extends Component {\n\tconstructor({ onUpdate, schema, init, ...props }) {\n\t\tsuper();\n\t\tthis.schema = propSchema(schema, props);\n\n\t\tif (init) {\n\t\t\tconst { valid, errors } = this.schema.serialize(init);\n\t\t\tconst errs = getErrorsObj(errors);\n\n\t\t\tinit = Object.assign({}, init, { init: true });\n\t\t\tonUpdate(init, valid, errs);\n\t\t}\n\t}\n\n\tupdateState(newstate) {\n\t\tconst { instance, valid, errors } = this.schema.serialize(newstate);\n\t\tconst errs = getErrorsObj(errors);\n\t\tthis.props.onUpdate(instance, valid, errs);\n\t}\n\n\tgetChildContext() {\n\t\tconst { schema } = this.props;\n\t\treturn { schema, stateStore: this };\n\t}\n\n\tfield(name, onChange) {\n\t\tconst { result, errors } = this.props;\n\t\tconst value = result[name];\n\t\tconst self = this;\n\t\treturn {\n\t\t\tdataError: (errors && errors[name]) || false,\n\t\t\tvalue,\n\t\t\tonChange(val) {\n\t\t\t\tconst newstate = Object.assign({}, self.props.result, { [name]: val });\n\t\t\t\tself.updateState(newstate);\n\t\t\t\tif (onChange) onChange(val);\n\t\t\t}\n\t\t};\n\t}\n\n\trender(props) {\n\t\tconst { result, errors, init, children, schema, ...prop } = props;\n\n\t\tif (schema.key && schema.key !== this.schema.key) {\n\t\t\tthis.schema = propSchema(schema, prop);\n\t\t\tthis.schema.serialize(result); // hack: valid first state\n\t\t\tthis.updateState(result);\n\t\t}\n\n\t\treturn (\n\t\t\t
    \n\t\t\t\t{children}\n\t\t\t
    \n\t\t);\n\t}\n}\n\nexport default connect(\n\tnull,\n\tdispatch => ({\n\t\tonUpdate: (result, valid, errors) => {\n\t\t\tdispatch(updateFormState({ result, valid, errors }));\n\t\t}\n\t})\n)(Form);\n\nfunction Label({ labelPos, title, children, ...props }) {\n\treturn (\n\t\t\n\t);\n}\n\nfunction Field(props) {\n\tconst { name, onChange, className, component, labelPos, ...prop } = props;\n\tconst { schema, stateStore } = this.context;\n\tconst desc = prop.schema || schema.properties[name];\n\tconst { dataError, ...fieldOpts } = stateStore.field(name, onChange);\n\n\tconst formField = component ?\n\t\th(component, { ...fieldOpts, ...prop, schema: desc }) :\n\t\t();\n\n\tif (labelPos === false) return formField;\n\treturn (\n\t\t\n\t\t\t{ formField }\n\t\t\n\t);\n}\n\nconst SelectOneOf = (props) => {\n\tconst { title, name, schema, ...prop } = props;\n\n\tconst selectDesc = {\n\t\ttitle,\n\t\tenum: [],\n\t\tenumNames: []\n\t};\n\n\tObject.keys(schema).forEach((item) => {\n\t\tselectDesc.enum.push(item);\n\t\tselectDesc.enumNames.push(schema[item].title || item);\n\t});\n\n\treturn ;\n};\n\n//\n\nfunction propSchema(schema, { customValid, serialize = {}, deserialize = {} }) {\n\tconst v = new jsonschema.Validator();\n\n\tif (customValid) {\n\t\tschema = Object.assign({}, schema); // copy\n\t\tschema.properties = Object.keys(customValid).reduce((res, prop) => {\n\t\t\tv.customFormats[prop] = customValid[prop];\n\t\t\tres[prop] = { format: prop, ...res[prop] };\n\t\t\treturn res;\n\t\t}, schema.properties);\n\t}\n\n\treturn {\n\t\tkey: schema.key || '',\n\t\tserialize: inst => v.validate(inst, schema, {\n\t\t\trewrite: serializeRewrite.bind(null, serialize)\n\t\t}),\n\t\tdeserialize: inst => v.validate(inst, schema, {\n\t\t\trewrite: deserializeRewrite.bind(null, deserialize)\n\t\t})\n\t};\n}\n\nfunction serializeRewrite(serializeMap, instance, schema) {\n\tconst res = {};\n\tif (typeof instance !== 'object' || !schema.properties) {\n\t\treturn instance !== undefined ? instance :\n\t\t\tschema.default;\n\t}\n\n\tObject.keys(schema.properties).forEach((p) => {\n\t\tif (p in instance)\n\t\t\tres[p] = instance[serializeMap[p]] || instance[p];\n\t});\n\n\treturn res;\n}\n\nfunction deserializeRewrite(deserializeMap, instance) {\n\treturn instance;\n}\n\nfunction getInvalidMessage(item) {\n\tif (!item.schema.invalidMessage) return item.message;\n\treturn (typeof item.schema.invalidMessage === 'function') ?\n\t\titem.schema.invalidMessage(item.instance) :\n\t\titem.schema.invalidMessage;\n}\n\nfunction getErrorsObj(errors) {\n\tconst errs = {};\n\tlet field;\n\n\terrors.forEach((item) => {\n\t\tfield = item.property.split('.')[1];\n\t\tif (!errs[field])\n\t\t\terrs[field] = getInvalidMessage(item);\n\t});\n\n\treturn errs;\n}\n\nexport { Field, SelectOneOf };\n","/****************************************************************************\n * Copyright 2018 EPAM Systems\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ***************************************************************************/\n\nimport { h, Component } from 'preact';\nimport { omit } from 'lodash';\n\nfunction GenericInput({ schema, value, onChange, type = 'text', ...props }) {\n\treturn (\n\t\t\n\t);\n}\n\nGenericInput.val = function (ev, schema) {\n\tconst input = ev.target;\n\tconst isNumber = (input.type === 'number' || input.type === 'range') ||\n\t\t(schema && (schema.type === 'number' || schema.type === 'integer'));\n\tconst value = isNumber ? input.value.replace(/,/g, '.') : input.value;\n\n\treturn (isNumber && !isNaN(value - 0)) ? value - 0 : value; // eslint-disable-line\n};\n\nfunction TextArea({ schema, value, onChange, ...props }) {\n\treturn (\n\t\t