{"version":3,"sources":["../node_modules/prop-types/index.js","../node_modules/react/index.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/underscore/modules/_setup.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bundle.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/@nivo/core/node_modules/d3-format/src/formatDecimal.js","../node_modules/@nivo/core/node_modules/d3-format/src/exponent.js","../node_modules/@nivo/core/node_modules/d3-format/src/formatSpecifier.js","../node_modules/@nivo/core/node_modules/d3-format/src/formatTrim.js","../node_modules/@nivo/core/node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/@nivo/core/node_modules/d3-format/src/defaultLocale.js","../node_modules/@nivo/core/node_modules/d3-format/src/formatRounded.js","../node_modules/@nivo/core/node_modules/d3-format/src/formatTypes.js","../node_modules/@nivo/core/node_modules/d3-format/src/identity.js","../node_modules/@nivo/core/node_modules/d3-format/src/locale.js","../node_modules/@nivo/core/node_modules/d3-format/src/formatGroup.js","../node_modules/@nivo/core/node_modules/d3-format/src/formatNumerals.js","../node_modules/@nivo/core/node_modules/d3-time/src/interval.js","../node_modules/@nivo/core/node_modules/d3-time/src/utcWeek.js","../node_modules/@nivo/core/node_modules/d3-time/src/duration.js","../node_modules/@nivo/core/node_modules/d3-time/src/utcDay.js","../node_modules/@nivo/core/node_modules/d3-time/src/week.js","../node_modules/@nivo/core/node_modules/d3-time/src/day.js","../node_modules/@nivo/core/node_modules/d3-time/src/year.js","../node_modules/@nivo/core/node_modules/d3-time/src/utcYear.js","../node_modules/@nivo/core/node_modules/d3-time-format/src/locale.js","../node_modules/@nivo/core/node_modules/d3-time-format/src/defaultLocale.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/basis.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/constant.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/color.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/rgb.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/basisClosed.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/numberArray.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/array.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/date.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/number.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/object.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/string.js","../node_modules/@nivo/core/node_modules/d3-interpolate/src/value.js","../node_modules/@nivo/core/dist/nivo-core.esm.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/lodash/last.js","../node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/basis.js","../node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/react-motion/lib/react-motion.js","../node_modules/d3-scale/src/init.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/constant.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/lodash/isArray.js","../node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/d3-shape/src/constant.js","../node_modules/events/events.js","../node_modules/lodash/_root.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@nivo/tooltip/dist/nivo-tooltip.esm.js","../node_modules/lodash/isFunction.js","../node_modules/classnames/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/inherits/inherits_browser.js","../node_modules/d3-color/src/color.js","../node_modules/webpack/buildin/global.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/immediate/lib/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/d3-format/src/exponent.js","../node_modules/@nivo/axes/node_modules/d3-time/src/interval.js","../node_modules/@nivo/axes/node_modules/d3-time/src/millisecond.js","../node_modules/@nivo/axes/node_modules/d3-time/src/second.js","../node_modules/@nivo/axes/node_modules/d3-time/src/duration.js","../node_modules/@nivo/axes/node_modules/d3-time/src/minute.js","../node_modules/@nivo/axes/node_modules/d3-time/src/utcMinute.js","../node_modules/@nivo/axes/node_modules/d3-time/src/hour.js","../node_modules/@nivo/axes/node_modules/d3-time/src/utcHour.js","../node_modules/@nivo/axes/node_modules/d3-time/src/day.js","../node_modules/@nivo/axes/node_modules/d3-time/src/utcDay.js","../node_modules/@nivo/axes/node_modules/d3-time/src/week.js","../node_modules/@nivo/axes/node_modules/d3-time/src/utcWeek.js","../node_modules/@nivo/axes/node_modules/d3-time/src/month.js","../node_modules/@nivo/axes/node_modules/d3-time/src/utcMonth.js","../node_modules/@nivo/axes/node_modules/d3-time/src/year.js","../node_modules/@nivo/axes/node_modules/d3-time/src/utcYear.js","../node_modules/@nivo/axes/node_modules/d3-time-format/src/locale.js","../node_modules/@nivo/axes/node_modules/d3-time-format/src/defaultLocale.js","../node_modules/@nivo/axes/node_modules/d3-format/src/formatDecimal.js","../node_modules/@nivo/axes/node_modules/d3-format/src/exponent.js","../node_modules/@nivo/axes/node_modules/d3-format/src/formatSpecifier.js","../node_modules/@nivo/axes/node_modules/d3-format/src/formatTrim.js","../node_modules/@nivo/axes/node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/@nivo/axes/node_modules/d3-format/src/defaultLocale.js","../node_modules/@nivo/axes/node_modules/d3-format/src/formatRounded.js","../node_modules/@nivo/axes/node_modules/d3-format/src/formatTypes.js","../node_modules/@nivo/axes/node_modules/d3-format/src/identity.js","../node_modules/@nivo/axes/node_modules/d3-format/src/locale.js","../node_modules/@nivo/axes/node_modules/d3-format/src/formatGroup.js","../node_modules/@nivo/axes/node_modules/d3-format/src/formatNumerals.js","../node_modules/@nivo/axes/dist/nivo-axes.esm.js","../node_modules/lodash/_baseGetTag.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/lodash/get.js","../node_modules/recompose/withPropsOnChange.js","../node_modules/d3-color/src/define.js","../node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/constant.js","../node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/color.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-scale/src/linear.js","../node_modules/lodash/set.js","../node_modules/lodash/_getNative.js","../node_modules/recompose/compose.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../src/timer.js","../../src/domHelpers.js","../../src/createGridComponent.js","../../src/VariableSizeGrid.js","../../src/createListComponent.js","../../src/FixedSizeGrid.js","../../src/TableHeader.js","../../src/utils.js","../../src/GridTable.js","../../src/TableHeaderRow.js","../../src/TableRow.js","../../src/TableHeaderCell.js","../../src/TableCell.js","../../src/Column.js","../../src/SortOrder.js","../../src/ExpandIcon.js","../../src/SortIndicator.js","../../src/ColumnResizer.js","../../src/ColumnManager.js","../../src/BaseTable.js","../../src/AutoResizer.js","../node_modules/argsarray/index.js","../node_modules/@nivo/colors/dist/nivo-colors.esm.js","../node_modules/lodash/isArrayLike.js","../node_modules/recompose/wrapDisplayName.js","../node_modules/recompose/setDisplayName.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/recompose/defaultProps.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/lodash/eq.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/identity.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/isPlainObject.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/react-measure/dist/index.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/d3-interpolate/src/number.js","../node_modules/lodash/isNumber.js","../node_modules/recompose/setPropTypes.js","../node_modules/lodash.get/index.js","../node_modules/delaunator/index.js","../node_modules/d3-delaunay/src/path.js","../node_modules/d3-delaunay/src/polygon.js","../node_modules/d3-delaunay/src/voronoi.js","../node_modules/d3-delaunay/src/delaunay.js","../node_modules/@nivo/voronoi/dist/nivo-voronoi.esm.js","../node_modules/react-motion/lib/stripStyle.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_createCtor.js","../node_modules/lodash/_replaceHolders.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/spark-md5/spark-md5.js","../node_modules/@nivo/legends/dist/nivo-legends.esm.js","../node_modules/d3-array/src/range.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/@nivo/scales/node_modules/d3-time/src/interval.js","../node_modules/@nivo/scales/node_modules/d3-time/src/utcWeek.js","../node_modules/@nivo/scales/node_modules/d3-time/src/duration.js","../node_modules/@nivo/scales/node_modules/d3-time/src/utcDay.js","../node_modules/@nivo/scales/node_modules/d3-time/src/week.js","../node_modules/@nivo/scales/node_modules/d3-time/src/day.js","../node_modules/@nivo/scales/node_modules/d3-time/src/year.js","../node_modules/@nivo/scales/node_modules/d3-time/src/utcYear.js","../node_modules/@nivo/scales/node_modules/d3-time-format/src/locale.js","../node_modules/@nivo/scales/node_modules/d3-time-format/src/defaultLocale.js","../node_modules/@nivo/scales/dist/nivo-scales.esm.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../node_modules/process/browser.js","../node_modules/react-motion/lib/mapToZero.js","../node_modules/react-motion/lib/stepper.js","../node_modules/performance-now/lib/performance-now.js","../node_modules/raf/index.js","../node_modules/react-motion/lib/shouldStopAnimation.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/webpack/buildin/module.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/_LazyWrapper.js","../node_modules/lodash/_baseLodash.js","../node_modules/lodash/_getHolder.js","../node_modules/vuvuzela/index.js","../node_modules/lodash/without.js","../node_modules/lodash/isEqual.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/lodash.isplainobject/index.js","../node_modules/lodash/uniq.js","../node_modules/lodash/isDate.js","../node_modules/d3-shape/src/line.js","../node_modules/timeseries-analysis/timeseries-analysis.js","../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../node_modules/d3-scale-chromatic/node_modules/d3-interpolate/src/cubehelix.js","../node_modules/object-assign/index.js","../node_modules/react-motion/lib/presets.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_safeGet.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_baseSet.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/recompose/setStatic.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/recompose/shallowEqual.js","../node_modules/lodash/_baseSetData.js","../node_modules/lodash/_metaMap.js","../node_modules/lodash/_createHybrid.js","../node_modules/lodash/_composeArgs.js","../node_modules/lodash/_composeArgsRight.js","../node_modules/lodash/_createRecurry.js","../node_modules/lodash/_getData.js","../node_modules/lodash/noop.js","../node_modules/lodash/_LodashWrapper.js","../node_modules/lodash/_setData.js","../node_modules/lodash/_setWrapToString.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/underscore/modules/restArguments.js","../node_modules/underscore/modules/isObject.js","../node_modules/underscore/modules/isNull.js","../node_modules/underscore/modules/isUndefined.js","../node_modules/underscore/modules/isBoolean.js","../node_modules/underscore/modules/isElement.js","../node_modules/underscore/modules/_tagTester.js","../node_modules/underscore/modules/isString.js","../node_modules/underscore/modules/isNumber.js","../node_modules/underscore/modules/isDate.js","../node_modules/underscore/modules/isRegExp.js","../node_modules/underscore/modules/isError.js","../node_modules/underscore/modules/isSymbol.js","../node_modules/underscore/modules/isMap.js","../node_modules/underscore/modules/isWeakMap.js","../node_modules/underscore/modules/isSet.js","../node_modules/underscore/modules/isWeakSet.js","../node_modules/underscore/modules/isArrayBuffer.js","../node_modules/underscore/modules/isDataView.js","../node_modules/underscore/modules/isArray.js","../node_modules/underscore/modules/isFunction.js","../node_modules/underscore/modules/_has.js","../node_modules/underscore/modules/isArguments.js","../node_modules/underscore/modules/isFinite.js","../node_modules/underscore/modules/isNaN.js","../node_modules/underscore/modules/constant.js","../node_modules/underscore/modules/_createSizePropertyCheck.js","../node_modules/underscore/modules/_shallowProperty.js","../node_modules/underscore/modules/_getByteLength.js","../node_modules/underscore/modules/_isBufferLike.js","../node_modules/underscore/modules/isTypedArray.js","../node_modules/underscore/modules/_getLength.js","../node_modules/underscore/modules/_isArrayLike.js","../node_modules/underscore/modules/_collectNonEnumProps.js","../node_modules/underscore/modules/keys.js","../node_modules/underscore/modules/isEmpty.js","../node_modules/underscore/modules/isMatch.js","../node_modules/underscore/modules/underscore.js","../node_modules/underscore/modules/isEqual.js","../node_modules/underscore/modules/allKeys.js","../node_modules/underscore/modules/values.js","../node_modules/underscore/modules/pairs.js","../node_modules/underscore/modules/invert.js","../node_modules/underscore/modules/functions.js","../node_modules/underscore/modules/_createAssigner.js","../node_modules/underscore/modules/extend.js","../node_modules/underscore/modules/extendOwn.js","../node_modules/underscore/modules/defaults.js","../node_modules/underscore/modules/_baseCreate.js","../node_modules/underscore/modules/create.js","../node_modules/underscore/modules/clone.js","../node_modules/underscore/modules/tap.js","../node_modules/underscore/modules/has.js","../node_modules/underscore/modules/identity.js","../node_modules/underscore/modules/matcher.js","../node_modules/underscore/modules/_deepGet.js","../node_modules/underscore/modules/property.js","../node_modules/underscore/modules/_optimizeCb.js","../node_modules/underscore/modules/_baseIteratee.js","../node_modules/underscore/modules/iteratee.js","../node_modules/underscore/modules/_cb.js","../node_modules/underscore/modules/mapObject.js","../node_modules/underscore/modules/noop.js","../node_modules/underscore/modules/propertyOf.js","../node_modules/underscore/modules/times.js","../node_modules/underscore/modules/random.js","../node_modules/underscore/modules/now.js","../node_modules/underscore/modules/_createEscaper.js","../node_modules/underscore/modules/_escapeMap.js","../node_modules/underscore/modules/escape.js","../node_modules/underscore/modules/unescape.js","../node_modules/underscore/modules/_unescapeMap.js","../node_modules/underscore/modules/templateSettings.js","../node_modules/underscore/modules/template.js","../node_modules/underscore/modules/result.js","../node_modules/underscore/modules/uniqueId.js","../node_modules/underscore/modules/chain.js","../node_modules/underscore/modules/_executeBound.js","../node_modules/underscore/modules/partial.js","../node_modules/underscore/modules/bind.js","../node_modules/underscore/modules/_flatten.js","../node_modules/underscore/modules/bindAll.js","../node_modules/underscore/modules/memoize.js","../node_modules/underscore/modules/delay.js","../node_modules/underscore/modules/defer.js","../node_modules/underscore/modules/throttle.js","../node_modules/underscore/modules/debounce.js","../node_modules/underscore/modules/wrap.js","../node_modules/underscore/modules/negate.js","../node_modules/underscore/modules/compose.js","../node_modules/underscore/modules/after.js","../node_modules/underscore/modules/before.js","../node_modules/underscore/modules/once.js","../node_modules/underscore/modules/findKey.js","../node_modules/underscore/modules/_createPredicateIndexFinder.js","../node_modules/underscore/modules/findIndex.js","../node_modules/underscore/modules/findLastIndex.js","../node_modules/underscore/modules/sortedIndex.js","../node_modules/underscore/modules/_createIndexFinder.js","../node_modules/underscore/modules/indexOf.js","../node_modules/underscore/modules/lastIndexOf.js","../node_modules/underscore/modules/find.js","../node_modules/underscore/modules/findWhere.js","../node_modules/underscore/modules/each.js","../node_modules/underscore/modules/map.js","../node_modules/underscore/modules/_createReduce.js","../node_modules/underscore/modules/reduce.js","../node_modules/underscore/modules/reduceRight.js","../node_modules/underscore/modules/filter.js","../node_modules/underscore/modules/reject.js","../node_modules/underscore/modules/every.js","../node_modules/underscore/modules/some.js","../node_modules/underscore/modules/contains.js","../node_modules/underscore/modules/invoke.js","../node_modules/underscore/modules/pluck.js","../node_modules/underscore/modules/where.js","../node_modules/underscore/modules/max.js","../node_modules/underscore/modules/min.js","../node_modules/underscore/modules/sample.js","../node_modules/underscore/modules/shuffle.js","../node_modules/underscore/modules/sortBy.js","../node_modules/underscore/modules/_group.js","../node_modules/underscore/modules/groupBy.js","../node_modules/underscore/modules/indexBy.js","../node_modules/underscore/modules/countBy.js","../node_modules/underscore/modules/partition.js","../node_modules/underscore/modules/toArray.js","../node_modules/underscore/modules/size.js","../node_modules/underscore/modules/_keyInObj.js","../node_modules/underscore/modules/pick.js","../node_modules/underscore/modules/omit.js","../node_modules/underscore/modules/initial.js","../node_modules/underscore/modules/first.js","../node_modules/underscore/modules/rest.js","../node_modules/underscore/modules/last.js","../node_modules/underscore/modules/compact.js","../node_modules/underscore/modules/flatten.js","../node_modules/underscore/modules/difference.js","../node_modules/underscore/modules/without.js","../node_modules/underscore/modules/uniq.js","../node_modules/underscore/modules/union.js","../node_modules/underscore/modules/intersection.js","../node_modules/underscore/modules/unzip.js","../node_modules/underscore/modules/zip.js","../node_modules/underscore/modules/object.js","../node_modules/underscore/modules/range.js","../node_modules/underscore/modules/chunk.js","../node_modules/underscore/modules/_chainResult.js","../node_modules/underscore/modules/mixin.js","../node_modules/underscore/modules/underscore-array-methods.js","../node_modules/underscore/modules/index-default.js","../node_modules/react-dom/index.js","../node_modules/pouchdb/lib/index-browser.es.js","../node_modules/@nivo/line/dist/nivo-line.esm.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/lodash/merge.js","../node_modules/lodash/isString.js","../node_modules/recompose/withProps.js","../node_modules/lodash/partialRight.js","../node_modules/lodash/pick.js","../node_modules/d3-scale/src/log.js","../node_modules/lodash/uniqBy.js","../node_modules/lodash/sortBy.js","../node_modules/recompose/pure.js","../node_modules/react-virtualized-auto-sizer/dist/index.esm.js","../node_modules/dayjs/dayjs.min.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-path/src/path.js","../node_modules/pouchdb/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/pouchdb/node_modules/uuid/dist/esm-browser/bytesToUuid.js","../node_modules/pouchdb/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/immediate/lib/queueMicrotask.js","../node_modules/immediate/lib/mutation.js","../node_modules/immediate/lib/messageChannel.js","../node_modules/immediate/lib/stateChange.js","../node_modules/immediate/lib/timeout.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-motion/lib/Motion.js","../../src/performance-now.coffee","../node_modules/react-motion/lib/StaggeredMotion.js","../node_modules/react-motion/lib/TransitionMotion.js","../node_modules/react-motion/lib/mergeDiff.js","../node_modules/react-motion/lib/spring.js","../node_modules/react-motion/lib/reorderKeys.js","../node_modules/lodash/_baseMerge.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/_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/_baseIsNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.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/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/constant.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/toString.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseDifference.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/recompose/getDisplayName.js","../node_modules/recompose/mapProps.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/recompose/utils/pick.js","../node_modules/fbjs/lib/shallowEqual.js","../node_modules/lodash/_createWrap.js","../node_modules/lodash/_createBind.js","../node_modules/lodash/_createCurry.js","../node_modules/lodash/_countHolders.js","../node_modules/lodash/_isLaziable.js","../node_modules/lodash/_getFuncName.js","../node_modules/lodash/_realNames.js","../node_modules/lodash/wrapperLodash.js","../node_modules/lodash/_wrapperClone.js","../node_modules/lodash/_getWrapDetails.js","../node_modules/lodash/_insertWrapDetails.js","../node_modules/lodash/_updateWrapDetails.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_reorder.js","../node_modules/lodash/_createPartial.js","../node_modules/lodash/_mergeData.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/_basePick.js","../node_modules/lodash/_basePickBy.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_flatRest.js","../node_modules/lodash/flatten.js","../node_modules/lodash/_isFlattenable.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/_baseIsDate.js","../node_modules/recompose/shouldUpdate.js","../node_modules/google-image-chart/google-image-chart.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../node_modules/d3-shape/src/area.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/number.js"],"names":["module","exports","require","specifier","n","length","colors","Array","i","slice","VERSION","root","self","global","Function","ArrayProto","prototype","ObjProto","Object","SymbolProto","Symbol","push","toString","hasOwnProperty","supportsArrayBuffer","ArrayBuffer","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","point","that","x","y","_context","bezierCurveTo","_x0","_x1","_y0","_y1","Basis","context","this","areaStart","_line","areaEnd","NaN","lineStart","_point","lineEnd","lineTo","closePath","moveTo","BasisClosed","noop","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","x0","y0","Bundle","beta","_basis","_beta","_x","_y","j","t","dx","dy","custom","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","abs","atan2","cos","max","min","sin","sqrt","PI","x1","y1","x2","y2","_l01_a","a","_l01_2a","_l12_a","_l12_2a","_l23_a","b","_l23_2a","m","CatmullRom","alpha","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","sign","slope3","h0","h1","s0","s1","p","slope2","h","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","r","_t0","call","px","py","i0","i1","Step","_t","series","o","sums","map","sum","none","sort","v","s","peak","vi","vj","Infinity","order","parent","node","nodes","children","k","value","phi","squarifyRatio","ratio","row","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","rows","dice","treemapDice","treemapSlice","squarify","resquarify","_squarify","count","hierarchy","data","child","childs","Node","valued","defaultChildren","pop","depth","eachBefore","computeHeight","d","copyData","height","constructor","eachAfter","each","callback","current","next","reverse","compare","path","end","start","ancestor","aNodes","ancestors","bNodes","c","leastCommonAncestor","splice","descendants","leaves","links","source","target","copy","formatDecimalParts","toExponential","indexOf","coefficient","re","formatSpecifier","match","exec","Error","FormatSpecifier","fill","align","symbol","zero","width","comma","precision","trim","type","undefined","prefixExponent","locale","format","exponent","join","toFixed","round","toLocaleString","replace","toPrecision","formatRounded","floor","toUpperCase","prefixes","grouping","thousands","group","identity","Number","g","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","prefix","test","toLowerCase","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","padding","formatPrefix","f","e","formatLocale","Date","newInterval","floori","offseti","field","interval","date","arguments","ceil","d0","d1","offset","step","range","stop","previous","filter","setTime","every","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","weekday","setDate","getDate","getDay","setHours","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","day","year","setMonth","setFullYear","getFullYear","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","pads","numberRe","percentRe","requoteRe","pad","string","requote","formatRe","names","RegExp","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","u","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","q","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","getHours","formatHour12","formatDayOfYear","timeDay","timeYear","formatMilliseconds","getMilliseconds","formatMicroseconds","formatMonthNumber","getMonth","formatMinutes","getMinutes","formatSeconds","getSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","timeSunday","dISO","timeThursday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","timeMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","z","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","getUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","definition","locale_dateTime","dateTime","locale_date","locale_time","time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","charAt","newParse","week","parse","X","utcFormat","utcParse","defaultLocale","basis","v0","v1","v2","v3","t2","t3","linear","gamma","nogamma","exponential","constant","rgbGamma","color","rgb","colorRgb","opacity","rgbSpline","spline","values","isNumberArray","DataView","genericArray","nb","na","reA","reB","am","bm","bs","bi","lastIndex","index","number","one","numberArray","valueOf","object","_objectSpread","ownKeys","getOwnPropertySymbols","concat","sym","getOwnPropertyDescriptor","enumerable","forEach","key","_defineProperty","obj","defineProperty","configurable","writable","textProps","PropTypes","fontSize","fontFamily","axisThemePropType","shape","domain","line","stroke","isRequired","strokeWidth","strokeDasharray","ticks","text","legend","gridThemePropType","legendsThemePropType","labelsThemePropType","dotsThemePropType","markersThemePropType","crosshairPropType","annotationsPropType","outlineWidth","outlineColor","link","outline","defaultTheme","background","textColor","axis","grid","legends","labels","dots","markers","crosshair","annotations","lineColor","lineStrokeWidth","tooltip","container","borderRadius","boxShadow","basic","whiteSpace","display","alignItems","chip","marginRight","table","tableCell","strokeOpacity","fontProps","extendDefaultTheme","customTheme","theme","merge","prop","get","set","quantizeColorScales","nivo","BrBG","last","schemeBrBG","PRGn","schemePRGn","PiYG","schemePiYG","PuOr","schemePuOr","RdBu","schemeRdBu","RdGy","schemeRdGy","RdYlBu","schemeRdYlBu","RdYlGn","schemeRdYlGn","spectral","schemeSpectral","blues","schemeBlues","greens","schemeGreens","greys","schemeGreys","oranges","schemeOranges","purples","schemePurples","reds","schemeReds","BuGn","schemeBuGn","BuPu","schemeBuPu","GnBu","schemeGnBu","OrRd","schemeOrRd","PuBuGn","schemePuBuGn","PuBu","schemePuBu","PuRd","schemePuRd","RdPu","schemeRdPu","YlGnBu","schemeYlGnBu","YlGn","schemeYlGn","YlOrBr","schemeYlOrBr","YlOrRd","schemeYlOrRd","quantizeColorScalesKeys","curvePropMapping","schemeCategory10","schemeAccent","schemeDark2","schemePaired","schemePastel1","schemePastel2","schemeSet1","schemeSet2","schemeSet3","interpolateBrBG","interpolatePRGn","interpolatePiYG","interpolatePuOr","interpolateRdBu","interpolateRdGy","interpolateRdYlBu","interpolateRdYlGn","interpolateSpectral","interpolateBlues","interpolateGreens","interpolateGreys","interpolateOranges","interpolatePurples","interpolateReds","interpolateViridis","interpolateInferno","interpolateMagma","interpolatePlasma","interpolateWarm","interpolateCool","interpolateCubehelixDefault","interpolateBuGn","interpolateBuPu","interpolateGnBu","interpolateOrRd","interpolatePuBuGn","interpolatePuBu","interpolatePuRd","interpolateRdPu","interpolateYlGnBu","interpolateYlGn","interpolateYlOrBr","interpolateYlOrRd","interpolateRainbow","interpolateSinebow","oneOfType","oneOf","func","arrayOf","basisClosed","basisOpen","curveBundle","curveCardinal","cardinalClosed","curveCardinalClosed","cardinalOpen","curveCardinalOpen","curveCatmullRom","catmullRomClosed","curveCatmullRomClosed","catmullRomOpen","curveCatmullRomOpen","curveLinear","linearClosed","monotoneX","monotoneY","natural","stepAfter","stepBefore","curvePropKeys","closedCurvePropKeys","endsWith","areaCurvePropKeys","without","lineCurvePropKeys","lineCurvePropType","curveFromProp","id","TypeError","defsPropTypes","defs","stackOrderPropMapping","ascending","stackOrderAscending","descending","insideOut","peaks","appearance","top","bottom","tops","bottoms","stackOrderNone","stackOrderPropKeys","stackOffsetPropMapping","expand","diverging","yp","yn","stackOffsetNone","silhouette","wiggle","s2","si","sij0","s3","sk","stackOffsetPropKeys","treeMapTilePropMapping","binary","partition","valueOffset","valueTarget","hi","mid","valueLeft","valueRight","xk","yk","sliceDice","treemapSquarify","treemapResquarify","treeMapTilePropKeys","marginPropType","right","left","motionPropTypes","animate","bool","motionStiffness","motionDamping","blendModePropType","defaultMargin","scaleOrdinal","_objectSpread$1","_defineProperty$1","useDimensions","partialMargin","useMemo","margin","innerWidth","innerHeight","outerWidth","outerHeight","useValueFormatter","format$1","themeContext","createContext","defaultPartialTheme","ThemeProvider","_ref","_ref$theme","partialTheme","usePartialTheme","React","createElement","Provider","propTypes","useTheme","useContext","_typeof","iterator","_extends","assign","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_possibleConstructorReturn","_assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","_setPrototypeOf","_defineProperty$2","enhancedSpring","config","interpolator","interpolate","spring","SmartMotion","_PureComponent","_getPrototypeOf2","_this","_len","args","_key","protoProps","staticProps","subClass","superClass","_inherits","_this2","_this$props","style","rest","resolvedStyle","currentStepValues","newInters","stepValues","stepInterpolators","oldValues","Motion","newValues","_key2","percentage","_objectSpread$2","PureComponent","motionConfigContext","MotionConfigProvider","stiffness","damping","springConfig","defaultProps","useMotionConfig","_objectSpread$3","_defineProperty$3","_slicedToArray","arr","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","done","err","_iterableToArrayLimit","_nonIterableRest","containerStyle","position","tooltipStyle","pointerEvents","zIndex","Container","content","_ref$isInteractive","isInteractive","containerEl","useRef","_useState2","useState","isTooltipVisible","tooltipContent","state","setState","showTooltip","useCallback","event","bounds","getBoundingClientRect","clientX","clientY","hideTooltip","ref","tooltipContext","_typeof$1","_classCallCheck$1","_defineProperties$1","_possibleConstructorReturn$1","_assertThisInitialized$1","_getPrototypeOf$1","_setPrototypeOf$1","_defineProperty$4","ResponsiveWrapper","_Component","dimensions","_inherits$1","_this$state$dimension","shouldRender","Measure","onResize","contentRect","measureRef","Component","_objectSpread$4","_defineProperty$5","LinearGradient","_ref2","stopColor","stopOpacity","linearGradientDef","options","gradientTypes","linearGradient","PatternDots","memo","size","stagger","fullSize","radius","halfPadding","patternUnits","cx","cy","displayName","degreesToRadians","degrees","textPropsByEngine","svg","center","baseline","canvas","PatternLines","_spacing","spacing","_rotation","rotation","lineWidth","strokeLinecap","PatternSquares","patternTypes","patternDots","patternLines","patternSquares","_objectWithoutProperties$1","_objectWithoutPropertiesLoose$1","_objectSpread$8","_defineProperty$9","defsMapping","Defs","definitions","def","Defs$1","SvgWrapper","xmlns","role","transform","array","DotsItemSymbol","borderWidth","borderColor","DotsItemSymbol$1","DotsItem","datum","label","labelTextAnchor","labelYOffset","textAnchor","DotsItem$1","CartesianMarkersItem","scale","lineStyle","textStyle","legendPosition","legendOffsetX","legendOffsetY","legendOrientation","legendNode","legendProps","offsetX","offsetY","orientation","computeLabel","dominantBaseline","instanceOf","CartesianMarkersItem$1","_extends$1","CartesianMarkers","xScale","yScale","marker","CartesianMarkers$1","withDimensions","compose","setPropTypes","withPropsOnChange","nextProps","isEqual","getLabelGenerator","_label","labelFormat","formatter","getRawLabel","isFunction","_defineProperty$c","withTheme","_ref$srcKey","srcKey","_ref$destKey","destKey","_typeof$2","_objectWithoutProperties$2","_objectWithoutPropertiesLoose$2","_classCallCheck$2","_defineProperties$2","_possibleConstructorReturn$2","_assertThisInitialized$2","_getPrototypeOf$2","_setPrototypeOf$2","containerStyle$1","Container$1","_ref$renderWrapper","renderWrapper","_useTooltipHandlers","useTooltipHandlers","showTooltipAt","showTooltipFromEvent","tooltipPosition","tooltipAnchor","TooltipWrapper","anchor","withContainer","WrappedComponent","_class","_inherits$2","childProps","isCursorInRect","cursorX","cursorY","getRelativeCursor","el","_objectSpread$9","_defineProperty$d","_toConsumableArray$1","arr2","_arrayWithoutHoles$1","iter","from","_iterableToArray$1","_nonIterableSpread$1","gradientKeys","patternKeys","isMatchingDef","predicate","dataKey","isPlainObject","pick","bindDefs","rules","_ref$colorKey","colorKey","_ref$targetKey","targetKey","boundDefs","generatedIds","_loop","_rules$i","find","includes","nodeColor","inheritedId","_ref3","_nodeColor","_inheritedId","inheritedDef","colorStop","rgbBasis","scheme","interpolateRgbBasis","_interopRequire","__esModule","_Motion","_StaggeredMotion","StaggeredMotion","_TransitionMotion","TransitionMotion","_spring","_presets","presets","_stripStyle","stripStyle","_reorderKeys","reorderKeys","initRange","initInterpolator","enumerableOnly","symbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","unit","normalize","bimap","r0","r1","polymap","bisect","clamp","unknown","transformer","untransform","piecewise","output","input","interpolateValue","rescale","clamper","invert","interpolateNumber","_","rangeRound","interpolateRound","continuous","unsupportedIterableToArray","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","once","emitter","name","Promise","resolve","reject","eventListener","errorListener","removeListener","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","emit","unshift","warned","console","warn","onceWrapper","fired","wrapFn","_onceWrap","wrapped","bind","_listeners","unwrap","evlistener","ret","unwrapListeners","arrayClone","listenerCount","arg","RangeError","setMaxListeners","getMaxListeners","doError","error","er","message","handler","len","listeners","addListener","on","prependListener","prependOnceListener","list","originalListener","shift","spliceOne","off","removeAllListeners","rawListeners","eventNames","freeGlobal","freeSelf","_createClass","setDimensions","_useMotionConfig","client","animatedPosition","_ref4","_ref5","Chip","BasicTooltip","_value","enableChip","renderContent","formatValue","tableStyle","borderCollapse","TableTooltip","title","column","crosshairPropTypes","CrosshairLine","Crosshair","xLine","yLine","Fragment","_slicedToArray$1","_arrayWithHoles$1","_iterableToArrayLimit$1","_nonIterableRest$1","isVisible","useTooltip","baseGetTag","isObject","tag","hasOwn","classNames","classes","argType","inner","default","ctor","superCtor","super_","TempCtor","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","formatHex","color_formatRgb","formatRgb","l","parseInt","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","m1","m2","define","channels","displayable","formatHsl","extend","window","_toConsumableArray","arrayLikeToArray","draining","currentQueue","scheduleDrain","types","queueIndex","queue","scheduled","cleanUpNextTick","nextTick","timeout","setTimeout","run","clearTimeout","install","Item","fun","task","millisecond","second","minute","utcMinute","setUTCSeconds","hour","utcHour","setUTCMinutes","month","utcMonth","centerScale","bandwidth","timeByType","timeMillisecond","utcMillisecond","timeSecond","utcSecond","timeMinute","timeHour","timeWeek","utcWeek","timeTuesday","timeWednesday","timeFriday","timeSaturday","timeMonth","timeTypes","timeIntervalRegexp","getScaleTicks","spec","isNumber","matches","timeType","useUTC","computeCartesianTicks","translate","ticksPosition","tickValues","tickSize","tickPadding","tickRotation","_ref$engine","engine","lineX","lineY","textX","textY","textAlign","textBaseline","getFormatter","computeGridLines","lines","_values","lineValues","lineCount","axisPropTypes","renderTick","legendOffset","axisPropType","AxisTick","rotate","_onClick","onClick","gStyle","AxisTick$1","willEnter","willLeave","_ref$style","val","Axis","_computeCartesianTick","legendX","legendY","legendRotation","tick","tickIndex","xy","styles","interpolatedStyles","Axis$1","_extends$2","positions","Axes","axes","isXAxis","Axes$1","GridLine","GridLine$1","_extends$3","GridLines","lineWillEnter","lineWillLeave","interpolatedStyle","GridLines$1","Grid","xValues","yValues","xLines","yLines","Grid$1","positions$1","renderAxesToCanvas","ctx","_ref$x","_ref$y","_ref$tickSize","_ref$tickPadding","_ref$tickRotation","_ref$legendPosition","_ref$legendOffset","save","font","lineCap","strokeStyle","beginPath","fillStyle","fillText","restore","_textAlign","fontWeight","renderAxisToCanvas","renderGridLinesToCanvas","getRawTag","objectToString","symToStringTag","toStringTag","_createForOfIteratorHelper","F","it","normalCompletion","didErr","_e2","baseGet","defaultValue","result","_interopRequireDefault","_extends2","_inheritsLoose2","_react","_reactLifecyclesCompat","_pick","_shallowEqual","_default","shouldMapOrKeys","propsMapper","BaseComponent","factory","createFactory","shouldMap","WithPropsOnChange","computedProps","prevProps","getDerivedStateFromProps","prevState","render","polyfill","hue","deg2rad","rad2deg","A","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","cosh","sinh","tickStep","precisionPrefix","precisionRound","precisionFixed","linearish","tickFormat","nice","prestep","maxIter","tickIncrement","baseSet","baseIsNative","getValue","funcs","reduce","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","lastThis","lastResult","lastArgs","calledOnce","newArgs","now","performance","cancelTimeout","timeoutID","cancelAnimationFrame","requestTimeout","requestAnimationFrame","cachedRTLResult","getRTLOffsetType","recalculate","outerDiv","document","outerStyle","innerDiv","innerStyle","defaultItemKey","columnIndex","createGridComponent","getColumnOffset","getColumnStartIndexForOffset","getColumnStopIndexForStartIndex","getColumnWidth","getEstimatedTotalHeight","getEstimatedTotalWidth","getOffsetForColumnAndAlignment","getOffsetForRowAndAlignment","getRowHeight","getRowOffset","getRowStartIndexForOffset","getRowStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_instanceProps","_resetIsScrollingTimeoutId","_outerRef","isScrolling","horizontalScrollDirection","scrollLeft","scrollTop","scrollUpdateWasRequested","verticalScrollDirection","overscanColumnStartIndex","overscanColumnStopIndex","overscanRowStartIndex","overscanRowStopIndex","visibleColumnStartIndex","visibleColumnStopIndex","visibleRowStartIndex","visibleRowStopIndex","columnWidth","direction","rowHeight","itemStyleCache","rowIndex","isRtl","clientHeight","clientWidth","scrollHeight","scrollWidth","calculatedScrollLeft","calculatedScrollTop","outerRef","validateSharedProps","columnCount","rowCount","scrollbarSize","div","getScrollbarSize","estimatedTotalHeight","horizontalScrollbarSize","estimatedTotalWidth","verticalScrollbarSize","initialScrollLeft","initialScrollTop","className","innerRef","innerElementType","innerTagName","itemData","itemKey","outerElementType","outerTagName","useIsScrolling","columnStartIndex","columnStopIndex","rowStartIndex","rowStopIndex","items","_getItemStyle","onScroll","overflow","WebkitOverflowScrolling","willChange","onItemsRendered","overscanColumnCount","overscanColumnsCount","overscanCount","overscanCountResolved","startIndex","stopIndex","overscanBackward","overscanForward","overscanRowCount","overscanRowsCount","rowMetadataMap","estimatedRowHeight","lastMeasuredRowIndex","totalSizeOfMeasuredRows","itemMetadata","columnMetadataMap","estimatedColumnWidth","lastMeasuredColumnIndex","getItemMetadata","itemType","itemMetadataMap","instanceProps","itemSize","lastMeasuredIndex","findNearestItem","findNearestItemBinarySearch","findNearestItemExponentialSearch","low","middle","high","currentOffset","itemCount","getOffsetForIndexAndAlignment","estimatedTotalSize","maxOffset","minOffset","scrollOffset","VariableSizeGrid","shouldForceUpdate","FixedSizeGrid","lastColumnOffset","middleOffset","lastRowOffset","numVisibleColumns","numVisibleRows","TableHeader","scrollTo","headerRef","renderHeaderRow","columns","headerRenderer","headerIndex","renderFrozenRow","rowRenderer","rowData","rowWidth","headerHeight","frozenData","rowHeights","_setRef","renderElement","renderer","callOrReturn","funcOrValue","cloneArray","getEstimatedTotalRowsHeight","GridTable","memoize","bodyWidth","resetAfterRowIndex","bodyRef","forceUpdateTable","scrollToPosition","scrollToTop","scrollToLeft","scrollToRow","scrollToItem","getTotalRowsHeight","_getEstimatedTotalRowsHeight","renderRow","classPrefix","headerWidth","hoveredRowKey","frozenRowCount","frozenRowsHeight","cls","cn","containerProps","_setHeaderRef","_setBodyRef","_setInnerRef","_itemKey","rowKey","_getHeaderHeight","_getBodyWidth","_handleItemsRendered","overscanStartIndex","overscanStopIndex","onScrollbarPresenceChange","onRowsRendered","TableHeaderRow","cellRenderer","expandColumnKey","ExpandIcon","expandIcon","Tag","tagName","cells","elementType","TableRow","measured","componentDidMount","_measureHeight","componentDidUpdate","rowEventHandlers","expandIconRenderer","onExpand","_handleExpand","eventHandlers","_getEventHandlers","otherStyles","onRowExpand","expanded","onRowHeightChange","initialMeasure","handlers","onRowHover","eventKey","mouseEnterHandler","hovered","mouseLeaveHandler","getIsResetting","TableHeaderCell","TableCell","cellData","Alignment","LEFT","CENTER","RIGHT","FrozenDirection","DEFAULT","NONE","Column","headerClassName","dataGetter","flexGrow","flexShrink","maxWidth","minWidth","frozen","hidden","resizable","sortable","ASC","DESC","expandable","indentSize","cursor","userSelect","lineHeight","transition","marginLeft","_handleClick","SortIndicator","sortOrder","SortOrder","addUserSelectStyles","doc","styleEl","addClassName","removeUserSelectStyles","removeClassName","selection","eventsFor","move","dragEventFor","ColumnResizer","componentWillUnmount","ownerDocument","onMouseDown","onMouseUp","onTouchStart","onTouchEnd","touchAction","_setHandleRef","_handleMouseDown","_handleMouseUp","_handleTouchStart","_handleTouchEnd","_handleDragStart","_handleDragStop","_handleDrag","offsetParent","offsetParentRect","lastX","MIN_WIDTH","movedX","newWidth","onResizeStart","onResizeStop","ColumnManager","_cache","fn","_cached","reset","idx","resetCache","getOriginalColumns","getColumns","getVisibleColumns","hasFrozenColumns","hasLeftFrozenColumns","hasRightFrozenColumns","getMainColumns","mainColumns","getLeftFrozenColumns","getRightFrozenColumns","getColumn","_columns","findIndex","getColumnsWidth","getLeftFrozenColumnsWidth","getRightFrozenColumnsWidth","recomputeColumnsWidth","setColumnWidth","recomputeColumnStyle","getColumnStyle","_columnStyles","getColumnStyles","flexValue","flex","msFlex","WebkitFlex","recomputeColumnStyles","elements","element","normalizeColumns","getContainerStyle","DEFAULT_COMPONENTS","EMPTY_ARRAY","BaseTable","defaultExpandedRowKeys","resizingKey","resizingWidth","expandedRowKeys","wait","lastFn","lastTime","inThrottle","throttle","tree","depthMap","keysSet","stack","item","flattenOnKeys","isObjectEqual","objA","objB","ignoreFunction","keysA","keysB","valueA","valueB","valueAType","ms","timeoutId","debounce","getDOMNode","getColumnManager","getExpandedRowKeys","getExpandedState","expandedData","expandedDepthMap","_depthMap","_data","getTotalColumnsWidth","columnManager","leftTable","rightTable","resetRowHeightCache","setExpandedRowKeys","renderExpandIcon","expandIconProps","extraProps","_getComponent","rowClassName","rowClass","_prefixClass","rowProps","_handleRowHeightChange","renderRowCell","pathArray","parts","getPathSegments","cellProps","cell","cellCls","renderHeader","headerClass","headerProps","renderHeaderCell","sortBy","sortState","headerCellProps","sorting","data-key","_handleColumnResize","renderMainTable","fixed","tableWidth","columnsWidth","_handleRowsRendered","renderLeftTable","containerHeight","_verticalScrollbarSize","_getLeftTableContainerStyle","_scroll","renderRightTable","scrollbarWidth","renderResizingLine","rightWidth","_getTableHeight","_horizontalScrollbarSize","renderFooter","footerHeight","footerRenderer","renderEmptyLayer","emptyRenderer","renderOverlay","overlayRenderer","disabled","_flattenOnKeys","maxHeight","_setContainerRef","_setMainTableRef","_setLeftTableRef","_setRightTableRef","components","_getRowHeight","_rowHeightMap","_getIsResetting","_getFrozenRowsHeight","tableHeight","totalRowsHeight","totalHeight","_getBodyHeight","_getFrozenContainerHeight","_calcScrollbarSizes","totalColumnsWidth","prevHorizontalScrollbarSize","prevVerticalScrollbarSize","_maybeScrollbarPresenceChange","horizontal","vertical","_maybeCallOnEndReached","onEndReached","onEndReachedThreshold","distanceFromEnd","_lastScannedRowIndex","_hasDataChangedSinceEndReached","_handleScroll","lastScrollTop","_handleVerticalScroll","_handleRowHover","_handleRowExpand","_handleColumnResizeStart","_handleColumnResizeStop","_handleColumnSort","onColumnSort","_handleFrozenRowHeightChange","_mainRowHeightMap","_leftRowHeightMap","_rightRowHeightMap","_resetIndex","scrollDiv","ignoreFunctionInColumnCompare","onExpandedRowsChange","onColumnResize","onColumnResizeEnd","AutoResizer","disableWidth","disableHeight","categoricalColorSchemes","category10","accent","dark2","paired","pastel1","pastel2","set1","set2","set3","categoricalColorSchemeIds","divergingColorSchemes","brown_blueGreen","purpleRed_green","pink_yellowGreen","purple_orange","red_blue","red_grey","red_yellow_blue","red_yellow_green","divergingColorSchemeIds","sequentialColorSchemes","blue_green","blue_purple","green_blue","orange_red","purple_blue_green","purple_blue","purple_red","red_purple","yellow_green_blue","yellow_green","yellow_orange_brown","yellow_orange_red","sequentialColorSchemeIds","colorSchemes","colorSchemeIds","colorInterpolators","viridis","inferno","magma","plasma","warm","cool","cubehelixDefault","rainbow","sinebow","getOrdinalColorScale","instruction","getIdentity","generator","_scale","_generator","isDivergingColorScheme","_scale2","_generator2","isSequentialColorScheme","_scale3","_generator3","useOrdinalColorScale","useInheritedColor","parentColor","inheritedColor","themeColor","getColor","modifiers","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_modifier","modifierType","amount","_iterator","return","modify","getInheritedColorGenerator","ordinalColorsPropType","isLength","_getDisplayName","hocName","_setStatic","_unsupportedIterableToArray","minLen","DefaultProps","ownerProps","implicit","ordinal","Map","has","other","reIsUint","isObjectLike","isSymbol","getPrototype","funcProto","objectProto","funcToString","objectCtorString","proto","Ctor","_arrayLikeToArray","getTypes","allowedTypes","getContentRect","calculations","clientTop","clientLeft","offsetTop","offsetLeft","offsetWidth","offsetHeight","scroll","rect","getComputedStyle","marginTop","marginBottom","getWindowOf","defaultView","_temp","WithContentRect","entry","_animationFrameID","_resizeObserver","_node","_window","measure","entries","_handleRef","unobserve","observe","_inheritsLoose","_proto","ResizeObserver","disconnect","withContentRect","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","arrayProto","coreJsData","maskSrcKey","uid","IE_PROTO","reIsNative","getNative","symbolProto","symbolToString","Hash","clear","ListCache","MapCache","assocIndexOf","isKey","stringToPath","toKey","isHostObject","toSource","getMapData","__data__","isKeyable","baseToString","quote","resolver","memoized","cache","Cache","EPSILON","EDGE_STACK","Uint32Array","Delaunator","coords","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","Float64Array","update","points","getX","defaultGetX","getY","defaultGetY","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","i2","minDist","dist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","subarray","triangles","halfedges","orient","ax","ay","bx","by","ex","ey","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","_legalize","pseudoAngle","ar","a0","b0","al","p0","pr","pl","p1","inCircle","hbl","_link","br","orientIfSure","rx","ry","qx","qy","fx","fy","bp","cp","ids","dists","temp","tempDist","swap","tmp","Path","Polygon","Voronoi","delaunay","xmin","ymin","xmax","ymax","_circumcenters","vectors","_init","circumcenters","x3","y3","ab","buffer","inedges","ti","tj","xi","yi","xj","yj","_renderSegment","_project","_clip","cellPolygon","polygon","renderCell","c0","_regioncode","c1","_clipSegment","ci","neighbors","cj","ai","li","aj","lj","e0","_cell","_clipInfinite","_clipFinite","e1","P","sx0","sy0","sx1","sy1","_edgecode","_edge","contains","vx0","vy0","vxn","vyn","vx","vy","flatIterable","tau","pointX","pointY","jitter","Delaunay","_delaunator","_hullIndex","flatArray","collinear","hypot","hullIndex","dc","dt","renderHull","arc","trianglePolygon","renderTriangle","VoronoiPropTypes","xDomain","yDomain","layers","enableLinks","linkLineWidth","linkLineColor","enableCells","cellLineWidth","cellLineColor","enablePoints","pointSize","pointColor","voronoi","VoronoiDefaultProps","layerById","renderBounds","renderPoints","layer","scaleLinear","scaledPoints","pure","getAccessor","directive","useVoronoiMesh","debug","points2d","computeMeshPoints","computeMesh","Mesh","onMouseEnter","onMouseMove","onMouseLeave","elementRef","currentIndex","setCurrentIndex","_useVoronoiMesh","voronoiPath","getIndexAndNodeFromEvent","_getRelativeCursor2","handleMouseEnter","_getIndexAndNodeFromE2","handleMouseMove","_getIndexAndNodeFromE4","handleMouseLeave","previousNode","handleClick","_getIndexAndNodeFromE6","renderVoronoiToCanvas","globalAlpha","renderVoronoiCellToCanvas","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","eq","objectCreate","baseCreate","baseIsArguments","isArguments","overRest","setToString","castPath","thisBinding","placeholder","resIndex","Linear","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tail","lo","rhex","toUtf8","str","unescape","encodeURIComponent","hexToBinaryString","bytes","substr","fromCharCode","SparkMD5","to","num","targetArray","sourceArray","byteLength","begin","Uint8Array","append","appendBinary","contents","_buff","_length","_hash","raw","buff","_finish","getState","hash","destroy","hashBinary","first","returnUInt8Array","concatenateArrayBuffers","utf8Str2ArrayBuffer","md51_array","legendEffectPropType","itemTextColor","itemBackground","itemOpacity","symbolSize","symbolBorderWidth","symbolBorderColor","symbolPropTypes","symbolShape","symbolSpacing","interactivityPropTypes","datumPropType","LegendPropShape","translateX","translateY","itemsSpacing","itemWidth","itemHeight","itemDirection","effects","zeroPadding","computeDimensions","_padding","horizontalPadding","verticalPadding","computePositionFromAnchor","containerWidth","computeItemLayout","symbolX","symbolY","labelX","labelY","labelAnchor","labelAlignment","justify","symbolPropTypes$1","symbolDefaultProps","SymbolCircle","SymbolDiamond","SymbolSquare","_objectSpread$5","_typeof$3","_classCallCheck$3","_defineProperties$3","_possibleConstructorReturn$3","_assertThisInitialized$3","_getPrototypeOf$3","_setPrototypeOf$3","SymbolTriangle","_inherits$3","_objectSpread$6","_defineProperty$6","symbolByShape","circle","diamond","square","triangle","LegendSvgItem","_Symbol","setStyle","_style","acc","effect","_style2","_computeItemLayout","some","_defineProperty$7","LegendSvg","xStep","yStep","_defineProperty$8","_objectSpread$7","BoxLegendSvg","_computeDimensions","_computePositionFromA","textPropsMapping","hanging","central","renderLegendToCanvas","_ref$translateX","_ref$translateY","_ref$padding","_ref$justify","_ref$itemsSpacing","_ref$itemDirection","_ref$itemTextColor","_ref$symbolSize","_ref$symbolSpacing","itemX","itemY","fillRect","band","ordinalRange","paddingInner","paddingOuter","sequence","pointish","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","durationSecond","durationMinute","durationHour","durationDay","tickInterval","bisector","timeParse","_precisionCutOffsByTy","linearScalePropTypes","stacked","logScalePropTypes","base","pointScale","scalePoint","all","pointScalePropTypes","timePrecisions","precisionCutOffs","setMilliseconds","setSeconds","setMinutes","precisionCutOffsByType","createDateNormalizer","_ref$format","_ref$precision","_ref$useUTC","precisionFn","cutOff","createPrecisionMethod","parseTime","timeScale","_ref$min","_ref$max","scaleUtc","scaleTime","timeScalePropTypes","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","getOtherAxis","compareValues","compareDateValues","getTime","computeXYScalesForSeries","_series","xScaleSpec","yScaleSpec","serie","generateSeriesXY","stackX","stackY","computeScale","xStacked","yStacked","_ref$stacked","_ref$reverse","minStacked","maxStacked","linearScale","_ref$base","hasZero","hasMixedSign","scaleLog","logScale","generateSeriesAxis","scaleSpec","_ref$getValue","_ref$setValue","setValue","parseFloat","uniq","uniqBy","stackAxis","otherType","otherAxis","isDate","stackValue","head","scalePropType","ramp","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","drainQueue","runClearTimeout","browser","env","argv","version","versions","binding","cwd","chdir","dir","umask","secondPerFrame","destX","newV","newX","reusedTuple","getNanoSeconds","hrtime","loadTime","hr","vendors","raf","caf","_now","cancelled","handle","cancel","currentStyle","currentVelocity","styleValue","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","webpackPolyfill","deprecate","paths","stubFalse","freeExports","nodeType","freeModule","Buffer","isBuffer","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","thisArg","baseSetToString","shortOut","iteratee","setCacheAdd","setCacheHas","SetCache","add","baseIndexOf","baseIsEqualDeep","baseIsEqual","bitmask","customizer","arrayLikeKeys","baseKeys","isArrayLike","baseLodash","LazyWrapper","__wrapped__","__actions__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","metaStack","lastMetaElement","lastElementIndex","stringify","arrayPrefix","objPrefix","res","JSON","collationIndex","parsedNum","numChar","parsedString","lastCh","numConsecutiveSlashes","ch","arrayElement","objElement","baseDifference","baseRest","isArrayLikeObject","delta","ascendingComparator","baseUniq","baseIsDate","nodeIsDate","defined","curve","defined0","gimage","charts","timeseries","original","saved","chart","main","bands","hlines","autoscale","fromTimeseries","clone","toArray","datapoint","mean","stdev","ma","period","ema","lwma","dsp_itrend","use","trigger","pixelize","tile","smoother","noiseData","osc","supports","threshold","prices","ordered","price","support","stats","standardize","cycle","forecast","forecast_length","buffer_forecast","d2","log","pos","minMSE","mse","outliers","regression_forecast","method","sample","degree","coeffs","regression_forecast_optimize","maxPct","maxSampleSize","ss","deg","maxDegree","methods","MSEData","regression_forecast_mse","MSE","backup","knownValue","sliding_regression_forecast","ARMaxEntropy","intermediates","scope","pef","per","coef","sn","sd","jj","ARLeastSquare","hj","coefficients","mat","SolveLE","vec","maxi","pivot","vswap","mswap","hvec","regression_analysis","N","N1","N2","theList","cval","runs","EM","SD4","z1","trend","DWNN","DWND","DW","durbinWatson","Q01","Q05","autocorrelation","adapter","cycles","quality","inertia","interpolateCubehelixLong","ts","cubehelixGamma","colorCubehelix","cubehelixLong","propIsEnumerable","toObject","test1","test2","test3","split","letter","shouldUseNative","noWobble","gentle","wobbly","stiff","baseAssignValue","baseFor","createBaseFor","overArg","freeProcess","objValue","baseKeysIn","baseTimes","isIndex","inherited","isArr","isArg","isBuff","isType","skipIndexes","nativeMax","otherArgs","nativeNow","lastCalled","stamp","remaining","assignValue","nested","newValue","comparator","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","Set","WeakMap","metaMap","baseSetData","composeArgs","composeArgsRight","countHolders","createCtor","createRecurry","getHolder","reorder","replaceHolders","createHybrid","partials","holders","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isCurried","isFlip","wrapper","holdersCount","newHolders","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","isLaziable","setData","setWrapToString","wrapFunc","isCurry","newData","getData","LodashWrapper","chainAll","__chain__","__index__","__values__","getWrapDetails","insertWrapDetails","updateWrapDetails","reference","baseHasIn","hasPath","arrayPush","isFlattenable","baseFlatten","isStrict","arrayIncludes","arrayIncludesWith","createSet","setToArray","isCommon","outer","computed","seenIndex","baseMatches","baseMatchesProperty","property","srcValue","restArguments","isNull","isUndefined","isBoolean","isElement","tagTester","nodelist","childNodes","Int8Array","createSizePropertyCheck","getSizeProperty","collection","sizeProperty","shallowProperty","getByteLength","typedArrayPattern","isDataView","isBufferLike","getLength","collectNonEnumProps","emulatedSet","nonEnumIdx","isEmpty","isString","isMatch","attrs","_keys","_wrapped","aStack","bStack","deepEq","getUint8","areArrays","aCtor","bCtor","allKeys","pairs","functions","createAssigner","keysFunc","defaults","toJSON","extendOwn","tap","interceptor","_has","matcher","deepGet","optimizeCb","argCount","accumulator","baseIteratee","cb","mapObject","results","currentKey","propertyOf","times","accum","random","createEscaper","escaper","testRegexp","replaceRegexp","escapeMap","templateSettings","evaluate","escape","noMatch","escapes","escapeRegExp","escapeChar","template","settings","oldSettings","variable","argument","fallback","idCounter","uniqueId","chain","_chain","executeBound","sourceFunc","boundFunc","callingContext","partial","boundArgs","bound","callArgs","flatten","strict","hasher","address","delay","later","leading","throttled","trailing","immediate","debounced","callNow","wrap","negate","after","before","findKey","createPredicateIndexFinder","sortedIndex","createIndexFinder","predicateFind","findLastIndex","findWhere","createReduce","reducer","initial","fromIndex","guard","contextPath","pluck","where","lastComputed","rand","shuffle","criteria","behavior","pass","reStrSymbol","keyInObj","compact","Boolean","_flatten","otherArrays","difference","isSorted","arrays","intersection","unzip","chunk","chainResult","mixin","allExports","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","ExportedSet","ExportedMap","mangle","unmangle","Map$1","_store","Set$1","cloneBinaryObject","cloneArrayBuffer","webkitSlice","mangled","delete","species","supportsMapAndSet","newObject","toISOString","Blob","isBinaryObject","called","getArguments","toPromise","usedCB","promise","fulfill","resp","mesg","then","adapterFun","_closed","_destroyed","logArgs","origCallback","responseArgs","logApiCall","taskqueue","isReady","addTask","failed","hasLocal","identityFunction","formatResultForOpenRevsGet","ok","bulkGet","db","opts","requests","docs","requestsById","request","numDocs","numDone","perDocResults","checkDone","info","collapseResultsAndFinish","allRequests","nextBatch","upTo","batch","docId","docIdx","docRequests","docOpts","open_revs","rev","formatResult","param","processBatch","localStorage","setItem","getItem","hasLocalStorage","Changes","EE","addEventListener","attachBrowserEvents","guardedConsole","defaultBackOff","maxTimeout","randomNumber","explainError","status","inherits","dbName","inprogress","eventFunction","changesOpts","changes","seq","since","onChange","notifyLocalWindows","notify","$inject_Object_assign","nextSource","nextKey","PouchError","reason","MISSING_BULK_DOCS","MISSING_DOC","REV_CONFLICT","INVALID_ID","MISSING_ID","RESERVED_ID","UNKNOWN_ERROR","BAD_ARG","QUERY_PARSE_ERROR","DOC_VALIDATION","BAD_REQUEST","NOT_AN_OBJECT","IDB_ERROR","INVALID_REV","MISSING_STUB","createError","CustomPouchError","generateErrorFromResponse","filterChange","req","hasFilter","query","query_params","change","filterReturn","msg","tryFilter","include_docs","attachments","att","_attachments","stub","arrs","invalidIdError","isRemote","_remote","parseDesignDocFunctionName","normalizeDesignDocFunctionName","normalized","qParser","parser","parseUri","uri","encoded","decodeURIComponent","$0","$1","$2","scopeEval","upsert","diffFun","docRev","_rev","newDoc","updated","_id","put","tryAndPut","thisAtob","atob","thisBtoa","btoa","createBlob","properties","builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","getBlob","binaryStringToArrayBuffer","bin","buf","binStringToBluffer","binString","b64ToBluffer","b64","readAsBinaryString","blob","reader","FileReader","hasBinaryString","onloadend","arrayBufferToBinaryString","readAsArrayBuffer","blobToBinaryString","blobOrBuffer","blobToBase64","base64","setImmediateShim","setImmediate","appendBlob","sliceBlob","arrayBuffer","appendString","binaryMd5","inputIsString","chunkSize","chunks","currentChunk","Md5","loadNextChunk","rawToBase64","stringMd5","deterministic_revs","clonedDoc","_rev_tree","v4","uuid","winningRev","metadata","winningId","winningPos","winningDeleted","toVisit","rev_tree","branches","deleted","traverseRevTree","revs","newCtx","sortByPos","collectLeaves","isLeaf","collectConflicts","win","conflicts","leaf","rootToLeaf","history","sortByPos$1","insertSorted","binarySearch","pathToTree","numStemmed","currentLeaf","compareTree","mergeTree","in_tree1","in_tree2","tree1","tree2","merged","doMerge","dontExpand","restree","branch","diff","candidateParents","trees","parentIdx","elementsLen","newTree","stemmed","stemmedRevs","revHash","stem","getTrees","isDeleted","isLocalId","Changes$1","complete","ee","onDestroy","pending","lastSeq","isCancelled","tryCatchInChangeListener","validateChanges","processChange","changeList","_conflicts","yankError","compareByIdThenRev","idCompare","_revisions","AbstractPouchDB","TaskQueue","PouchDB","__opts","auto_compaction","backend","adapters","preferredAdapters","adapterName","use_prefix","parseAdapter","_adapter","valid","fail","onDestroyed","from_constructor","onClosed","prepareForDestruction","ready","_changesFilterPlugin","validate","doChanges","live","shouldFilter","limit","newPromise","_changes","update_seq","post","bulkDocs","_putLocal","_deleted","_removeLocal","putDoc","_put","new_edits","force","oldRevId","newRevNum","newRevId","transformForceOptionToNewEditsOption","putAttachment","attachmentId","rev$$1","api","createAttachment","prevrevpos","content_type","revpos","removeAttachment","remove","docOrId","optsOrRev","was_delete","revsDiff","missing","addToMissing","revId","_getRevisionTree","missingForId","processDoc","missingObj","compactDocument","revTree","edges","prnt","edge","candidates","_doCompaction","_compactionQueue","doNextCompaction","catch","last_seq","_compact","return_docs","promises","_getLocal","finishOpenRevs","latest","_get","revs_info","splittedRev","revNo","currentPath","hashIndex","indexOfRev","howMany","_revs_info","_getAttachment","getAttachment","allDocs","skip","start_key","startkey","end_key","endkey","incompatibleOpt","allDocsKeysParse","_allDocs","close","_close","_info","db_name","_type","attachmentError","attachmentNameError","atts","cleanDocs","_bulkDocs","registerDependentDatabase","dependentDb","depDB","dependentDbs","usePrefix","destroyDb","_destroy","localDoc","deletedMap","trueName","execute","AbortController","abort","f$1","fetch","Headers","eventEmitter","Pouch","destructListeners","_destructionListeners","dbList","setUpEventEmitter","addToPreferredAdapters","plugin","__defaults","defaultOpts","PouchAlt","url","getFieldFromDoc","parsedField","parseField","fieldName","fields","combinationFields","isCombinationalField","getKey","mergeAndedSelectors","selectors","selector","$eq","fieldMatchers","operator","$gte","$gt","mergeGtGte","$lte","$lt","mergeLtLte","$ne","mergeNe","mergeEq","massageSelector","wasAnded","isAndInSelector","isAnd","mergeAndedSelectorsNested","orOrNor","subSelector","collate","normalizeKey","stringCollate","arrayCollate","ak","bk","objectCollate","origKey","indexify","expFormat","magnitude","neg","magString","padWith","upToLength","targetLength","factor","factorStr","numToIndexableString","toIndexableString","objKey","parseNumber","originalIdx","numAsString","magAsString","filterInMemoryFields","requestDef","inMemoryFields","rowFilter","fieldSorter","getFieldValuesAsArray","aRow","bRow","collation","createFieldSorter","docFieldValue","orMatchers","matchCominationalSelector","matchSelector","userOperator","userValue","matchers","fieldExists","fieldIsNotUndefined","arrayContainsValue","divisor","mod","modField","neValue","arraySize","arrayContainsAllValues","regexMatch","typeMatch","filterName","view","changesHandler","doc_ids","viewName","ddoc","mapFun","views","rowsMatched","matchesSelector","filterFun","filters","reservedWords","dataWords","parseRevisionInfo","parseDoc","newEdits","dbOpts","nRevNum","revInfo","revisions","revisionIds","makeRevTreeFromRevisions","specialKey","preprocessString","blobType","asBinary","parseBase64","digest","preprocessAttachment","md5","preprocessBlob","updateDoc","revLimit","prev","docInfo","writeDoc","splitRev","targetPos","targetId","revExists","previousWinningRev","previouslyDeleted","isRoot","newRev","rev_map","winningRev$$1","winningRevIsDeleted","processDocs","docInfos","fetchedDocs","tx","overallCallback","idsToDocs","docsDone","docsToDo","checkAllDocsDone","currentDoc","resultsIdx","docWritten","nextDoc","rootIsMissing","insertDoc","DOC_STORE","META_STORE","safeJsonStringify","json","vuvuzela","idbError","evt","encodeMetadata","deletedOrLocal","decodeMetadata","storedObject","safeJsonParse","decodeDoc","_doc_id_rev","lastIndexOf","readBlobData","body","asBlob","fetchAttachmentsIfNecessary","txn","attObj","objectStore","onsuccess","fetchAttachment","postProcessAttachments","attNames","compactRevs","possiblyOrphanedDigests","seqStore","attStore","attAndSeqStore","IDBKeyRange","deleteOrphanedAttachments","openCursor","only","digestSeq","primaryKey","continue","openTransactionSafely","idb","stores","mode","transaction","idbBulkDocs","docStore","bySeqStore","attachStore","attachAndSeqStore","metaStore","docInfoError","metaDoc","allDocsProcessed","docCountDelta","preconditionErrored","_meta","blobSupport","onAllDocsProcessed","updateDocCountIfReady","docCount","newRevIsDeleted","isUpdate","collectResults","finishDoc","attachmentSaved","newAtt","saveAttachment","writeAttachments","afterPutDoc","revsToDelete","compactTree","metadataToStore","afterPutMetadata","attsAdded","attsToAdd","onerror","preventDefault","stopPropagation","insertAttachmentMappings","putReq","overallErr","docv","recv","processedAttachment","preprocessAttachments","txnResult","onabort","ontimeout","oncomplete","finish","digests","filename","verifyAttachment","attErr","verifyAttachments","numFetched","revs_limit","readMetadata","fetchExistingDocs","startTransaction","runBatchedCursor","keyRange","batchSize","onBatch","keysBatch","valuesBatch","pseudoCursor","onGetAll","onGetAllKeys","onCursor","getAll","getAllKeys","newKeyRange","lastKey","upper","upperOpen","code","lowerBound","idbAllDocs","keyRangeError","inclusiveEnd","inclusive_end","upperBound","createKeyRange","onResultsReady","updateSeq","onSuccess","docIdRevIndex","allDocsInner","fetchDocAsynchronously","batchValues","batchValue","batchKeys","returnVal","total_rows","maxKey","allDocsKeys","running","applyNext","docIds","numResults","docIdsToMetadata","onGetMetadata","docIdRev","objectStores","winningDocs","metadatas","fetchWinningDocAndMetadata","winningDoc","processMetadataAndWinningDoc","onBatchDone","filtered","blobSupportPromise","cachedDBs","openReqList","IdbPouch","action","tryCode","enqueueTask","thisCallback","addDeletedOrLocalIndex","createIndex","unique","migrateLocalStore","localStore","local","seqCursor","migrateAttsAndSeqs","digestMap","migrateMetadata","onGetMetadataSeq","metadataSeq","fetchMetadataSeq","instanceId","reqOpts","historyNode","attachId","attachment","blobData","doc_count","idb_attachment_format","oldRev","oStore","oldDoc","openReq","indexedDB","deleteDatabase","cached","open","onupgradeneeded","oldVersion","createObjectStore","keyPath","autoIncrement","createSchema","currentTarget","createLocalStoreSchema","addAttachAndSeqStore","migrations","migration","onversionchange","storedMetaDoc","completeSetup","storeMetaDocIfReady","instanceKey","countDocs","blob$$1","matchedChrome","navigator","userAgent","matchedEdge","checkBlobSupport","supportsBulkGetMap","readAttachmentsAsBlobOrBuffer","encodeDocId","preprocessAttachments$1","getHost","protocol","hasUrlPrefix","user","password","auth","username","genDBUrl","genUrl","pathDel","host","port","paramsToStr","params","HttpPouch","dbUrl","setupPromise","ourFetch","headers","credentials","nAuth","token","ua","isIE","isTrident","isEdge","isGET","shouldCacheBust","adapterFun$$1","setup","fetchJSON","response","skip_setup","encodeAttachmentId","uuid$$1","ping","compact_running","doBulkGet","doBulkGetShim","numBatches","onResult","batchNum","subOpts","supportsBulkGet","fetchAttachments","filenames","promiseFactories","doNext","runNextBatch","onError","thisErr","pool","typeFieldDescriptor","fetchData","docOrDocs","contentType","paramStr","batch_size","heartbeat","leftToFetch","feed","seq_interval","param_name","lastFetchedSeq","controller","aborted","fetchOpts","signal","fetched","raw_results_length","finished","QueryParseError","captureStackTrace","NotFoundError","BuiltInError","promisedCallback","sequentialize","promiseFactory","theSet","mapToKeysArray","createBuiltInError","jLen","jNum","evalFunctionWithEval","TaskQueue$1","createView","sourceDB","reduceFun","temporary","localDocName","cachedViews","viewSignature","createViewSignature","_cachedViews","promiseForView","depDbName","fullViewName","depDbs","lastSeqDoc","persistentQueues","tempViewQueue","parseViewName","emitError","builtInReduce","sumsqr","_sumsqr","abstract","mapper","ddocValidator","tryMap","tryReduce","rereduce","sortByKeyThenValue","keyCompare","sliceResults","rowToDocId","postprocessAttachments","addHttpParam","paramName","asJson","coerceInteger","integerCandidate","asNumber","checkQueryParseError","startkeyName","endkeyName","group_level","optionName","checkPositiveInteger","defaultsTo","getDocsToPersist","docIdsToChangesAndEmits","metaDocId","defaultMetaDoc","docData","indexableKeysToKeyValues","isGenOne","getKeyValueDocs","kvDocsRes","kvDocs","oldKeys","keyValue","newKeys","kvDoc","processKeyValueDocs","getQueue","updateView","mapResults","currentSeq","listOfDocsToPersist","docsToPersist","saveKeyValues","processNextBatch","createIndexableKeysToKeyValues","createDocIdsToChangesAndEmits","emittedKeyValue","complexKey","updateViewInQueue","queryView","totalRows","shouldReduce","fetchFromView","viewOpts","expectedKeys","parsedKeyAndDocId","parsedStr","parseIndexableString","onMapResultsReady","finalResults","shouldGroup","groups","lvl","POSITIVE_INFINITY","groupKey","reduceTry","reduceView","allDocsRes","docIdsToDocs","fetchPromises","keyStart","keyEnd","queryViewInQueue","queryPromised","_query","customQuery","keysAsString","httpQuery","finalPromiseFactory","designDocName","stale","coerceOptions","viewCleanup","_viewCleanup","customViewCleanup","httpViewCleanup","docsToViews","viewsToStatus","ddocName","viewDBNames","statusIsGood","viewDBName","destroyPromises","localViewCleanup","createAbstractMapReduce","origMap","reduceFunString","builtIn","getBuiltIn","mapreduce","isGenOne$1","getDocAttachments","getDocs","src","diffs","resultDocs","fetchRevisionOneDocs","hasConflicts","bulkGetOpts","missingRev","createBulkGetOpts","bulkGetResponse","bulkGetInfo","remoteDoc","doCheckForLocalAttachments","fileHasChanged","getDocAttachmentsFromTargetOrSource","updateCheckpoint","checkpoint","session","returnValue","session_id","replicator","Checkpointer","writeCheckpoint","updateTarget","updateSource","writeTargetCheckpoint","writeSourceCheckpoint","isForbiddenError","comparisons","targetDoc","sourceDoc","srcDoc","tgtDoc","compareReplicationHistory","sourceHistory","targetHistory","sourceRest","T","targetRest","hasSessionId","compareReplicationLogs","sessionId","getCheckpoint","generateReplicationId","queryParams","filterViewName","sortObjectPropertiesByKey","queryData","md5sum","replicate","currentBatch","repId","checkpointer","batches","pendingBatch","writingCheckpoint","changesCompleted","replicationCompleted","batches_limit","changesPending","changedDocs","start_time","docs_read","docs_written","doc_write_failures","errors","initCheckpointer","checkpointOpts","writeDocs","bulkOpts","completeReplication","errorsById","errorsNo","errorName","finishBatch","outResult","getChanges","onCheckpointError","getBatchDocs","got","startNextBatch","getDiffs","abortReplication","processPendingBatch","immediate$$1","fatalError","end_time","retry","back_off_function","backOffSet","current_back_off","backOff","onChangesComplete","onChangesError","_abortChanges","abortChanges","startChanges","_addedListeners","Replication","toPouch","PouchConstructor","replicateWrapper","replicateRet","sync","Sync","canceled","optsPush","optsPull","pull","pullChange","pushChange","pushDenied","pullDenied","pushPaused","pullPaused","pushActive","pullActive","removed","removeAll","addOneListener","success","_readyCalled","replicateMethods","LinePointTooltip","xFormatted","yFormatted","serieColor","PointTooltip","SliceTooltip","serieId","SliceTooltip$1","commonPropTypes","xFormat","yFormat","axisTop","axisRight","axisBottom","axisLeft","enableGridX","enableGridY","gridXValues","gridYValues","pointSymbol","any","pointBorderWidth","pointBorderColor","enableArea","areaOpacity","areaBlendMode","areaBaselineValue","debugMesh","tooltipFormat","enableSlices","debugSlices","sliceTooltip","enableCrosshair","crosshairType","LinePropTypes","enablePointLabel","useMesh","LineCanvasPropTypes","pixelRatio","commonDefaultProps","LineDefaultProps","LineCanvasDefaultProps","devicePixelRatio","useLine","_ref9","_ref9$xScale","_ref9$yScale","_ref9$colors","_ref9$curve","_ref9$areaBaselineVal","_ref9$pointColor","_ref9$pointBorderColo","_ref9$enableSlices","enableSlicesTooltip","formatX","formatY","getPointColor","getPointBorderColor","_useMemo","rawSeries","usePoints","slices","_ref6","slicePoints","prevSlice","nextSlice","_map","_ref7","sliceHeight","_ref8","useSlices","lineGenerator","useLineGenerator","areaGenerator","area","useAreaGenerator","Areas","areaColor","fillOpacity","mixBlendMode","Areas$1","LinesItem","thickness","LinesItem$1","Lines","Lines$1","SlicesItem","isCurrent","setCurrent","_useTooltip","SlicesItem$1","Slices","Slices$1","Points","enableLabel","getLabel","mappedPoints","Points$1","Mesh$2","Mesh$1","Line","pointLabel","pointLabelFormat","pointLabelYOffset","_useDimensions","_useLine","currentPoint","setCurrentPoint","_useState4","currentSlice","setCurrentSlice","legendData","areas","mesh","Line$1","ResponsiveLine","_slicedToArray$2","_arrayWithHoles$2","_iterableToArrayLimit$2","_nonIterableRest$2","LineCanvas","canvasEl","useEffect","getContext","getPointFromMouseEvent","pointIndex","handleMouseHover","MapShim","getIndex","class_1","__entries__","_a","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","removeEventListener","_b","propertyName","getInstance","instance_","defineConfigurable","emptyRect","createRectInit","toFloat","getBordersSize","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","clearActive","observation","baseMerge","srcIndex","_mapProps","createWrap","partialRight","basePick","flatRest","transformLog","transformExp","exp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log10","log2","logp","powp","baseOrderBy","isIterateeCall","iteratees","_shouldUpdate","hoc","createDetectElementResize","nonce","attachEvent","requestFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","cancelFrame","mozCancelAnimationFrame","webkitCancelAnimationFrame","resetTriggers","triggers","__resizeTriggers__","firstElementChild","contract","lastElementChild","expandChild","scrollListener","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","animation","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationName","animationKeyframes","animationStyle","addResizeListener","elementStyle","getElementById","css","getElementsByTagName","setAttribute","styleSheet","cssText","appendChild","createTextNode","createStyles","innerHTML","__animationListener__","removeResizeListener","detachEvent","removeChild","classCallCheck","createClass","possibleConstructorReturn","AutoSizer","_React$PureComponent","defaultHeight","defaultWidth","_onResize","_parentNode","_height","_width","paddingLeft","paddingRight","paddingTop","paddingBottom","newHeight","autoSizer","_autoSizer","parentNode","HTMLElement","_detectElementResize","_props","_state","childParams","bailoutOnChildren","$","utcOffset","weekdays","$L","utc","$u","$offset","$d","$y","$M","$D","$W","$H","$m","$s","$ms","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","unix","toDate","$locale","weekStart","$set","daysInMonth","subtract","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","SSS","toUTCString","isDayjs","en","Ls","_isNativeReflectConstruct","construct","sham","Proxy","_createSuper","Derived","Super","NewTarget","e10","e5","e2","power","LN10","step0","step1","pi","tauEpsilon","quadraticCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","a1","ccw","cw","da","getRandomValues","crypto","msCrypto","rnds8","rng","byteToHex","bytesToUuid","bth","rnds","for","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","G","isReactComponent","forceUpdate","I","isPureReactComponent","J","K","__self","__source","$$typeof","_owner","O","keyPrefix","aa","Y","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Children","Profiler","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Consumer","createRef","forwardRef","isValidElement","lazy","_ctor","_status","_result","useDebugValue","useImperativeHandle","useLayoutEffect","useReducer","ea","fa","ha","ia","ja","la","oa","ka","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","removeAttribute","setAttributeNS","Ya","Za","$a","bb","eb","fb","gb","hb","ib","jb","kb","lb","mb","pb","qb","_debugOwner","_debugSource","fileName","lineNumber","rb","sb","nodeName","xb","_valueTracker","stopTracking","tb","yb","checked","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","activeElement","Gb","Fb","Hb","selected","defaultSelected","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","textContent","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","firstChild","Rb","lastChild","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","oc","pc","qc","topLevelType","nativeEvent","targetInst","rc","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flexPositive","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","zoom","floodOpacity","strokeDashoffset","strokeMiterlimit","kd","ld","md","setProperty","nd","menuitem","col","embed","img","keygen","meta","track","wbr","od","pd","is","qd","rd","td","ud","vd","nextSibling","xd","HTMLIFrameElement","contentWindow","location","href","yd","contentEditable","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","ae","be","ce","Interface","isDefaultPrevented","defaultPrevented","eventPool","fe","destructor","de","getPooled","cancelBubble","persist","eventPhase","bubbles","cancelable","isTrusted","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","keyCode","detail","se","ve","which","te","ctrlKey","altKey","metaKey","char","ue","we","datetime","email","search","tel","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","parentWindow","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","repeat","sf","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","shared","vg","wg","suspenseConfig","payload","xg","yg","zg","ca","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","shouldComponentUpdate","Lg","contextType","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","Ug","implementation","Vg","Wg","Xg","Yg","Zg","ah","bh","dh","eh","fh","gh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","gi","getDerivedStateFromError","pendingContext","ni","qi","ii","retryTime","ji","unstable_avoidThisFallback","ki","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","mi","ri","wasMultiple","multiple","onclick","createElementNS","ui","wi","zi","Ai","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","focus","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","insertBefore","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","componentStack","Rj","bj","dj","kj","mj","nj","oj","qj","rj","sj","uj","wj","timeoutMs","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","compareDocumentPosition","createRange","setStart","removeAllRanges","addRange","setEnd","vb","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hasAttribute","hk","jk","kk","unmount","querySelectorAll","form","Lj","lk","Events","findFiberByHostInstance","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","queueMicrotask","Mutation","WebKitMutationObserver","channel","scriptEl","onreadystatechange","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","objectOf","exact","checkPropTypes","_mapToZero2","_stripStyle2","_stepper4","_performanceNow2","_raf2","_shouldStopAnimation2","_react2","_propTypes2","_React$Component","wasAnimating","animationID","prevTime","accumulatedTime","unreadPropStyle","clearUnreadPropStyle","destStyle","dirty","lastIdealStyle","lastIdealVelocity","startAnimationIfNecessary","timestamp","propsStyle","onRest","currentTime","timeDelta","currentFrameCompletion","framesToCatchUp","newLastIdealStyle","newLastIdealVelocity","newCurrentStyle","newCurrentVelocity","newLastIdealStyleValue","newLastIdealVelocityValue","_stepper","_stepper2","nextIdealX","nextIdealV","defaultState","defaultStyle","renderedChildren","unreadPropStyles","currentStyles","currentVelocities","lastIdealStyles","lastIdealVelocities","someDirty","destStyles","shouldStopAnimationAll","newLastIdealStyles","newLastIdealVelocities","newCurrentStyles","newCurrentVelocities","defaultStyles","_mergeDiff2","rehydrateStyles","mergedPropsStyles","plainStyles","cUnreadPropStyles","mergedPropsStyle","mergeAndSync","didLeave","oldMergedPropsStyles","oldCurrentStyles","oldCurrentVelocities","oldLastIdealStyles","oldLastIdealVelocities","newMergedPropsStyles","oldIndex","oldMergedPropsStyle","leavingStyle","newMergedPropsStyleCell","foundOldIndex","plainStyle","velocity","unmounting","_mergeAndSync","propStyles","_mergeAndSync2","newMergedPropsStyle","styleThatEntered","defaultStyleCell","_mergeAndSync3","hydratedStyles","onRemove","prevKeyIndex","nextKeyIndex","nextOrderA","nextOrderB","prevOrderA","prevOrderB","defaultConfig","_presets2","assignMergeValue","baseMergeDeep","keysIn","safeGet","LARGE_ARRAY_SIZE","isMasked","nativeObjectToString","isOwn","unmasked","hashClear","hashDelete","hashGet","hashHas","hashSet","fromRight","iterable","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","toPlainObject","mergeFunc","isTyped","allocUnsafe","isDeep","typedArray","byteOffset","isPrototype","typedArrayTags","copyObject","isNew","nativeKeysIn","isProto","assigner","sources","memoizeCapped","subString","arrayMap","valuesLength","valuesIndex","baseFindIndex","baseIsNaN","strictIndexOf","equalArrays","equalByTag","equalObjects","getTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapToArray","symbolValueOf","convert","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseGetAllKeys","getSymbols","symbolsFunc","arrayFilter","stubArray","nativeGetSymbols","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","nextState","__reactInternalSnapshotFlag","__reactInternalSnapshot","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","createBind","createCurry","createPartial","mergeData","toInteger","getFuncName","lodash","funcName","realNames","otherFunc","wrapperClone","reWrapDetails","reSplitDetails","reWrapComment","details","arrayEach","wrapFlags","pair","nativeMin","indexes","oldArray","srcBitmask","newBitmask","isCombo","toFinite","remainder","toNumber","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","basePickBy","hasIn","hasFunc","spreadableSymbol","isConcatSpreadable","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","async","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","isStrictComparable","baseProperty","basePropertyDeep","baseMap","baseSortBy","compareMultiple","orders","baseEach","baseForOwn","createBaseEach","eachFunc","comparer","compareAscending","objCriteria","othCriteria","ordersLength","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","ShouldUpdate","simpleEncoding","simpleEncode","valueArray","chartData","currentValue","google_image_chart","build","paramsArray","Rainbow","gradients","minNum","maxNum","colours","setColours","spectrum","increment","firstGradient","ColourGradient","setGradient","setNumberRange","colourGradient","setColors","setSpectrum","setSpectrumByArray","colourAt","segment","colorAt","minNumber","maxNumber","startColour","endColour","calcHex","channelStart_Base16","channelEnd_Base16","numRange","cStart_Base10","cPerUnit","c_Base10","getHexColour","isHexColour","colourNames","colourStart","colourEnd","candlestick","volume","fromYahoo","chd","bar","datasets","chco","fromTradeStudio","dataset","fromArray","pi_1_3","pi_2_3","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","formatDecimal","ascendingBisect","bisectRight"],"mappings":"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","file":"static/js/2.144f20ac.chunk.js","sourcesContent":["/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","// Current version.\nexport var VERSION = '1.11.0';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","export default function() {}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import React, { useMemo, createContext, useContext, PureComponent, useRef, useState, useCallback, Component, memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { tooltipContext, useTooltipHandlers, TooltipWrapper } from '@nivo/tooltip';\nimport merge from 'lodash/merge';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport last from 'lodash/last';\nimport isArray from 'lodash/isArray';\nimport isString from 'lodash/isString';\nimport { scaleQuantize, scaleOrdinal, scaleSequential } from 'd3-scale';\nimport { schemeBrBG, schemePRGn, schemePiYG, schemePuOr, schemeRdBu, schemeRdGy, schemeRdYlBu, schemeRdYlGn, schemeSpectral, schemeBlues, schemeGreens, schemeGreys, schemeOranges, schemePurples, schemeReds, schemeBuGn, schemeBuPu, schemeGnBu, schemeOrRd, schemePuBuGn, schemePuBu, schemePuRd, schemeRdPu, schemeYlGnBu, schemeYlGn, schemeYlOrBr, schemeYlOrRd, schemeCategory10, schemeAccent, schemeDark2, schemePaired, schemePastel1, schemePastel2, schemeSet1, schemeSet2, schemeSet3, interpolateBrBG, interpolatePRGn, interpolatePiYG, interpolatePuOr, interpolateRdBu, interpolateRdGy, interpolateRdYlBu, interpolateRdYlGn, interpolateSpectral, interpolateBlues, interpolateGreens, interpolateGreys, interpolateOranges, interpolatePurples, interpolateReds, interpolateViridis, interpolateInferno, interpolateMagma, interpolatePlasma, interpolateWarm, interpolateCool, interpolateCubehelixDefault, interpolateBuGn, interpolateBuPu, interpolateGnBu, interpolateOrRd, interpolatePuBuGn, interpolatePuBu, interpolatePuRd, interpolateRdPu, interpolateYlGnBu, interpolateYlGn, interpolateYlOrBr, interpolateYlOrRd, interpolateRainbow, interpolateSinebow } from 'd3-scale-chromatic';\nimport isFunction from 'lodash/isFunction';\nimport without from 'lodash/without';\nimport { curveBasis, curveBasisClosed, curveBasisOpen, curveBundle, curveCardinal, curveCardinalClosed, curveCardinalOpen, curveCatmullRom, curveCatmullRomClosed, curveCatmullRomOpen, curveLinear, curveLinearClosed, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse, stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle } from 'd3-shape';\nimport { treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify, hierarchy } from 'd3-hierarchy';\nimport { format } from 'd3-format';\nimport { timeFormat } from 'd3-time-format';\nimport { spring, Motion } from 'react-motion';\nimport { interpolate } from 'd3-interpolate';\nimport Measure from 'react-measure';\nimport withProps from 'recompose/withProps';\nimport isEqual from 'lodash/isEqual';\nimport compose from 'recompose/compose';\nimport setPropTypes from 'recompose/setPropTypes';\nimport defaultProps from 'recompose/defaultProps';\nimport withPropsOnChange from 'recompose/withPropsOnChange';\nimport partialRight from 'lodash/partialRight';\nimport isPlainObject from 'lodash/isPlainObject';\nimport pick from 'lodash/pick';\n\nvar noop = (function () {});\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar textProps = {\n fill: PropTypes.string,\n fontSize: PropTypes.number,\n fontFamily: PropTypes.string\n};\nvar axisThemePropType = PropTypes.shape({\n domain: PropTypes.shape({\n line: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n strokeDasharray: PropTypes.string\n }).isRequired\n }).isRequired,\n ticks: PropTypes.shape({\n line: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n strokeDasharray: PropTypes.string\n }).isRequired,\n text: PropTypes.shape(_objectSpread({}, textProps)).isRequired\n }).isRequired,\n legend: PropTypes.shape({\n text: PropTypes.shape(_objectSpread({}, textProps)).isRequired\n }).isRequired\n});\nvar gridThemePropType = PropTypes.shape({\n line: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n strokeDasharray: PropTypes.string\n }).isRequired\n});\nvar legendsThemePropType = PropTypes.shape({\n text: PropTypes.shape(_objectSpread({}, textProps)).isRequired\n});\nvar labelsThemePropType = PropTypes.shape({\n text: PropTypes.shape(_objectSpread({}, textProps)).isRequired\n});\nvar dotsThemePropType = PropTypes.shape({\n text: PropTypes.shape(_objectSpread({}, textProps)).isRequired\n});\nvar markersThemePropType = PropTypes.shape({\n text: PropTypes.shape(_objectSpread({}, textProps)).isRequired\n});\nvar crosshairPropType = PropTypes.shape({\n line: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n strokeDasharray: PropTypes.string\n }).isRequired\n});\nvar annotationsPropType = PropTypes.shape({\n text: PropTypes.shape(_objectSpread({}, textProps, {\n outlineWidth: PropTypes.number.isRequired,\n outlineColor: PropTypes.string.isRequired\n })).isRequired,\n link: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n outlineWidth: PropTypes.number.isRequired,\n outlineColor: PropTypes.string.isRequired\n }).isRequired,\n outline: PropTypes.shape({\n stroke: PropTypes.string.isRequired,\n strokeWidth: PropTypes.number.isRequired,\n outlineWidth: PropTypes.number.isRequired,\n outlineColor: PropTypes.string.isRequired\n }).isRequired,\n symbol: PropTypes.shape({\n fill: PropTypes.string.isRequired,\n outlineWidth: PropTypes.number.isRequired,\n outlineColor: PropTypes.string.isRequired\n }).isRequired\n});\nvar themePropType = PropTypes.shape({\n background: PropTypes.string.isRequired,\n fontFamily: PropTypes.string.isRequired,\n fontSize: PropTypes.number.isRequired,\n textColor: PropTypes.string.isRequired,\n axis: axisThemePropType.isRequired,\n grid: gridThemePropType.isRequired,\n legends: legendsThemePropType.isRequired,\n labels: labelsThemePropType.isRequired,\n dots: dotsThemePropType.isRequired,\n markers: markersThemePropType,\n crosshair: crosshairPropType.isRequired,\n annotations: annotationsPropType.isRequired\n});\n\nvar defaultTheme = {\n background: 'transparent',\n fontFamily: 'sans-serif',\n fontSize: 11,\n textColor: '#333333',\n axis: {\n domain: {\n line: {\n stroke: 'transparent',\n strokeWidth: 1\n }\n },\n ticks: {\n line: {\n stroke: '#777777',\n strokeWidth: 1\n },\n text: {}\n },\n legend: {\n text: {\n fontSize: 12\n }\n }\n },\n grid: {\n line: {\n stroke: '#dddddd',\n strokeWidth: 1\n }\n },\n legends: {\n text: {\n fill: '#333333'\n }\n },\n labels: {\n text: {}\n },\n markers: {\n lineColor: '#000000',\n lineStrokeWidth: 1,\n text: {}\n },\n dots: {\n text: {}\n },\n tooltip: {\n container: {\n background: 'white',\n color: 'inherit',\n fontSize: 'inherit',\n borderRadius: '2px',\n boxShadow: '0 1px 2px rgba(0, 0, 0, 0.25)',\n padding: '5px 9px'\n },\n basic: {\n whiteSpace: 'pre',\n display: 'flex',\n alignItems: 'center'\n },\n chip: {\n marginRight: 7\n },\n table: {},\n tableCell: {\n padding: '3px 5px'\n }\n },\n crosshair: {\n line: {\n stroke: '#000000',\n strokeWidth: 1,\n strokeOpacity: 0.75,\n strokeDasharray: '6 6'\n }\n },\n annotations: {\n text: {\n fontSize: 13,\n outlineWidth: 2,\n outlineColor: '#ffffff'\n },\n link: {\n stroke: '#000000',\n strokeWidth: 1,\n outlineWidth: 2,\n outlineColor: '#ffffff'\n },\n outline: {\n fill: 'none',\n stroke: '#000000',\n strokeWidth: 2,\n outlineWidth: 2,\n outlineColor: '#ffffff'\n },\n symbol: {\n fill: '#000000',\n outlineWidth: 2,\n outlineColor: '#ffffff'\n }\n }\n};\n\nvar fontProps = ['axis.ticks.text', 'axis.legend.text', 'legends.text', 'labels.text', 'dots.text', 'markers.text', 'annotations.text'];\nvar extendDefaultTheme = function extendDefaultTheme(defaultTheme, customTheme) {\n var theme = merge({}, defaultTheme, customTheme);\n fontProps.forEach(function (prop) {\n if (get(theme, \"\".concat(prop, \".fontFamily\")) === undefined) {\n set(theme, \"\".concat(prop, \".fontFamily\"), theme.fontFamily);\n }\n if (get(theme, \"\".concat(prop, \".fontSize\")) === undefined) {\n set(theme, \"\".concat(prop, \".fontSize\"), theme.fontSize);\n }\n if (get(theme, \"\".concat(prop, \".fill\")) === undefined) {\n set(theme, \"\".concat(prop, \".fill\"), theme.textColor);\n }\n });\n return theme;\n};\n\nvar quantizeColorScales = {\n nivo: ['#d76445', '#f47560', '#e8c1a0', '#97e3d5', '#61cdbb', '#00b0a7'],\n BrBG: last(schemeBrBG),\n PRGn: last(schemePRGn),\n PiYG: last(schemePiYG),\n PuOr: last(schemePuOr),\n RdBu: last(schemeRdBu),\n RdGy: last(schemeRdGy),\n RdYlBu: last(schemeRdYlBu),\n RdYlGn: last(schemeRdYlGn),\n spectral: last(schemeSpectral),\n blues: last(schemeBlues),\n greens: last(schemeGreens),\n greys: last(schemeGreys),\n oranges: last(schemeOranges),\n purples: last(schemePurples),\n reds: last(schemeReds),\n BuGn: last(schemeBuGn),\n BuPu: last(schemeBuPu),\n GnBu: last(schemeGnBu),\n OrRd: last(schemeOrRd),\n PuBuGn: last(schemePuBuGn),\n PuBu: last(schemePuBu),\n PuRd: last(schemePuRd),\n RdPu: last(schemeRdPu),\n YlGnBu: last(schemeYlGnBu),\n YlGn: last(schemeYlGn),\n YlOrBr: last(schemeYlOrBr),\n YlOrRd: last(schemeYlOrRd)\n};\nvar quantizeColorScalesKeys = Object.keys(quantizeColorScales);\nvar guessQuantizeColorScale = function guessQuantizeColorScale(colors) {\n if (isFunction(colors)) {\n if (!isFunction(colors.domain)) {\n throw new Error(\"Provided colors should be a valid quantize scale providing a 'domain()' function\");\n }\n return colors;\n }\n if (quantizeColorScales[colors]) {\n return scaleQuantize().range(quantizeColorScales[colors]);\n }\n if (isArray(colors)) return scaleQuantize().range(colors);\n throw new Error(\"Unable to guess quantize color scale from '\".concat(colors, \"',\\nmust be a function or one of:\\n'\").concat(quantizeColorScalesKeys.join(\"', '\"), \"'\"));\n};\n\nvar colorSchemes = {\n nivo: ['#e8c1a0', '#f47560', '#f1e15b', '#e8a838', '#61cdbb', '#97e3d5'],\n category10: schemeCategory10,\n accent: schemeAccent,\n dark2: schemeDark2,\n paired: schemePaired,\n pastel1: schemePastel1,\n pastel2: schemePastel2,\n set1: schemeSet1,\n set2: schemeSet2,\n set3: schemeSet3,\n brown_blueGreen: last(schemeBrBG),\n purpleRed_green: last(schemePRGn),\n pink_yellowGreen: last(schemePiYG),\n purple_orange: last(schemePuOr),\n red_blue: last(schemeRdBu),\n red_grey: last(schemeRdGy),\n red_yellow_blue: last(schemeRdYlBu),\n red_yellow_green: last(schemeRdYlGn),\n spectral: last(schemeSpectral),\n blues: last(schemeBlues),\n greens: last(schemeGreens),\n greys: last(schemeGreys),\n oranges: last(schemeOranges),\n purples: last(schemePurples),\n reds: last(schemeReds),\n blue_green: last(schemeBuGn),\n blue_purple: last(schemeBuPu),\n green_blue: last(schemeGnBu),\n orange_red: last(schemeOrRd),\n purple_blue_green: last(schemePuBuGn),\n purple_blue: last(schemePuBu),\n purple_red: last(schemePuRd),\n red_purple: last(schemeRdPu),\n yellow_green_blue: last(schemeYlGnBu),\n yellow_green: last(schemeYlGn),\n yellow_orange_brown: last(schemeYlOrBr),\n yellow_orange_red: last(schemeYlOrRd)\n};\nvar colorSchemeIds = ['nivo',\n'category10', 'accent', 'dark2', 'paired', 'pastel1', 'pastel2', 'set1', 'set2', 'set3',\n'brown_blueGreen', 'purpleRed_green', 'pink_yellowGreen', 'purple_orange', 'red_blue', 'red_grey', 'red_yellow_blue', 'red_yellow_green', 'spectral',\n'blues', 'greens', 'greys', 'oranges', 'purples', 'reds',\n'blue_green', 'blue_purple', 'green_blue', 'orange_red', 'purple_blue_green', 'purple_blue', 'purple_red', 'red_purple', 'yellow_green_blue', 'yellow_green', 'yellow_orange_brown', 'yellow_orange_red'];\nvar colorInterpolators = {\n brown_blueGreen: interpolateBrBG,\n purpleRed_green: interpolatePRGn,\n pink_yellowGreen: interpolatePiYG,\n purple_orange: interpolatePuOr,\n red_blue: interpolateRdBu,\n red_grey: interpolateRdGy,\n red_yellow_blue: interpolateRdYlBu,\n red_yellow_green: interpolateRdYlGn,\n spectral: interpolateSpectral,\n blues: interpolateBlues,\n greens: interpolateGreens,\n greys: interpolateGreys,\n oranges: interpolateOranges,\n purples: interpolatePurples,\n reds: interpolateReds,\n viridis: interpolateViridis,\n inferno: interpolateInferno,\n magma: interpolateMagma,\n plasma: interpolatePlasma,\n warm: interpolateWarm,\n cool: interpolateCool,\n cubehelixDefault: interpolateCubehelixDefault,\n blue_green: interpolateBuGn,\n blue_purple: interpolateBuPu,\n green_blue: interpolateGnBu,\n orange_red: interpolateOrRd,\n purple_blue_green: interpolatePuBuGn,\n purple_blue: interpolatePuBu,\n purple_red: interpolatePuRd,\n red_purple: interpolateRdPu,\n yellow_green_blue: interpolateYlGnBu,\n yellow_green: interpolateYlGn,\n yellow_orange_brown: interpolateYlOrBr,\n yellow_orange_red: interpolateYlOrRd,\n rainbow: interpolateRainbow,\n sinebow: interpolateSinebow\n};\nvar colorInterpolatorIds = [\n'brown_blueGreen', 'purpleRed_green', 'pink_yellowGreen', 'purple_orange', 'red_blue', 'red_grey', 'red_yellow_blue', 'red_yellow_green', 'spectral',\n'blues', 'greens', 'greys', 'oranges', 'purples', 'reds',\n'viridis', 'inferno', 'magma', 'plasma', 'warm', 'cool', 'cubehelixDefault', 'blue_green', 'blue_purple', 'green_blue', 'orange_red', 'purple_blue_green', 'purple_blue', 'purple_red', 'red_purple', 'yellow_green_blue', 'yellow_green', 'yellow_orange_brown', 'yellow_orange_red',\n'rainbow', 'sinebow'];\nvar nivoCategoricalColors = function nivoCategoricalColors() {\n return scaleOrdinal(['#e8c1a0', '#f47560', '#f1e15b', '#e8a838', '#61cdbb', '#97e3d5']);\n};\nvar getColorScale = function getColorScale(colors, dataScale) {\n if (isString(colors)) {\n var scheme = colorSchemes[colors];\n if (scheme !== undefined) {\n var scale = scaleOrdinal(scheme);\n scale.type = 'ordinal';\n return scale;\n }\n if (dataScale !== undefined && colors.indexOf('seq:') === 0) {\n var interpolator = colorInterpolators[colors.slice(4)];\n if (interpolator !== undefined) {\n var _scale = scaleSequential(interpolator).domain(dataScale.domain());\n _scale.type = 'sequential';\n return _scale;\n }\n }\n }\n if (isArray(colors)) {\n var _scale2 = scaleOrdinal(colors);\n _scale2.type = 'ordinal';\n return _scale2;\n }\n return function () {\n return colors;\n };\n};\n\nvar quantizeColorScalePropType = PropTypes.oneOfType([PropTypes.oneOf(quantizeColorScalesKeys), PropTypes.func, PropTypes.arrayOf(PropTypes.string)]);\n\nvar curvePropMapping = {\n basis: curveBasis,\n basisClosed: curveBasisClosed,\n basisOpen: curveBasisOpen,\n bundle: curveBundle,\n cardinal: curveCardinal,\n cardinalClosed: curveCardinalClosed,\n cardinalOpen: curveCardinalOpen,\n catmullRom: curveCatmullRom,\n catmullRomClosed: curveCatmullRomClosed,\n catmullRomOpen: curveCatmullRomOpen,\n linear: curveLinear,\n linearClosed: curveLinearClosed,\n monotoneX: curveMonotoneX,\n monotoneY: curveMonotoneY,\n natural: curveNatural,\n step: curveStep,\n stepAfter: curveStepAfter,\n stepBefore: curveStepBefore\n};\nvar curvePropKeys = Object.keys(curvePropMapping);\nvar curvePropType = PropTypes.oneOf(curvePropKeys);\nvar closedCurvePropKeys = curvePropKeys.filter(function (c) {\n return c.endsWith('Closed');\n});\nvar closedCurvePropType = PropTypes.oneOf(closedCurvePropKeys);\nvar areaCurvePropKeys = without(curvePropKeys, 'bundle', 'basisClosed', 'basisOpen', 'cardinalClosed', 'cardinalOpen', 'catmullRomClosed', 'catmullRomOpen', 'linearClosed');\nvar areaCurvePropType = PropTypes.oneOf(areaCurvePropKeys);\nvar lineCurvePropKeys = without(curvePropKeys, 'bundle', 'basisClosed', 'basisOpen', 'cardinalClosed', 'cardinalOpen', 'catmullRomClosed', 'catmullRomOpen', 'linearClosed');\nvar lineCurvePropType = PropTypes.oneOf(lineCurvePropKeys);\nvar curveFromProp = function curveFromProp(id) {\n var curveInterpolator = curvePropMapping[id];\n if (!curveInterpolator) {\n throw new TypeError(\"'\".concat(id, \"', is not a valid curve interpolator identifier.\"));\n }\n return curvePropMapping[id];\n};\n\nvar defsPropTypes = {\n defs: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string.isRequired\n })).isRequired,\n fill: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string.isRequired,\n match: PropTypes.oneOfType([PropTypes.oneOf(['*']), PropTypes.object, PropTypes.func]).isRequired\n })).isRequired\n};\n\nvar stackOrderPropMapping = {\n ascending: stackOrderAscending,\n descending: stackOrderDescending,\n insideOut: stackOrderInsideOut,\n none: stackOrderNone,\n reverse: stackOrderReverse\n};\nvar stackOrderPropKeys = Object.keys(stackOrderPropMapping);\nvar stackOrderPropType = PropTypes.oneOf(stackOrderPropKeys);\nvar stackOrderFromProp = function stackOrderFromProp(prop) {\n return stackOrderPropMapping[prop];\n};\nvar stackOffsetPropMapping = {\n expand: stackOffsetExpand,\n diverging: stackOffsetDiverging,\n none: stackOffsetNone,\n silhouette: stackOffsetSilhouette,\n wiggle: stackOffsetWiggle\n};\nvar stackOffsetPropKeys = Object.keys(stackOffsetPropMapping);\nvar stackOffsetPropType = PropTypes.oneOf(stackOffsetPropKeys);\nvar stackOffsetFromProp = function stackOffsetFromProp(prop) {\n return stackOffsetPropMapping[prop];\n};\n\nvar treeMapTilePropMapping = {\n binary: treemapBinary,\n dice: treemapDice,\n slice: treemapSlice,\n sliceDice: treemapSliceDice,\n squarify: treemapSquarify,\n resquarify: treemapResquarify\n};\nvar treeMapTilePropKeys = Object.keys(treeMapTilePropMapping);\nvar treeMapTilePropType = PropTypes.oneOf(treeMapTilePropKeys);\nvar treeMapTileFromProp = function treeMapTileFromProp(prop) {\n return treeMapTilePropMapping[prop];\n};\n\nvar marginPropType = PropTypes.shape({\n top: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number\n}).isRequired;\nvar motionPropTypes = {\n animate: PropTypes.bool.isRequired,\n motionStiffness: PropTypes.number.isRequired,\n motionDamping: PropTypes.number.isRequired\n};\nvar blendModes = ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\nvar blendModePropType = PropTypes.oneOf(blendModes);\n\nvar useCurveInterpolation = function useCurveInterpolation(interpolation) {\n return useMemo(function () {\n return curveFromProp(interpolation);\n }, [interpolation]);\n};\n\nvar defaultAnimate = true;\nvar defaultMotionStiffness = 90;\nvar defaultMotionDamping = 15;\nvar defaultCategoricalColors = nivoCategoricalColors;\nvar defaultColorRange = scaleOrdinal(schemeSet3);\nvar defaultMargin = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; }\nfunction _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar useDimensions = function useDimensions(width, height) {\n var partialMargin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return useMemo(function () {\n var margin = _objectSpread$1({}, defaultMargin, partialMargin);\n return {\n margin: margin,\n innerWidth: width - margin.left - margin.right,\n innerHeight: height - margin.top - margin.bottom,\n outerWidth: width,\n outerHeight: height\n };\n }, [width, height, partialMargin.top, partialMargin.right, partialMargin.bottom, partialMargin.left]);\n};\n\nvar usePartialTheme = function usePartialTheme(partialTheme) {\n return useMemo(function () {\n return extendDefaultTheme(defaultTheme, partialTheme);\n }, [partialTheme]);\n};\n\nvar getValueFormatter = function getValueFormatter(format$1) {\n if (typeof format$1 === 'function') return format$1;\n if (typeof format$1 === 'string') {\n if (format$1.indexOf('time:') === 0) {\n return timeFormat(format$1.slice('5'));\n }\n return format(format$1);\n }\n return function (v) {\n return v;\n };\n};\nvar useValueFormatter = function useValueFormatter(format) {\n return useMemo(function () {\n return getValueFormatter(format);\n }, [format]);\n};\n\nvar themeContext = createContext();\nvar defaultPartialTheme = {};\nvar ThemeProvider = function ThemeProvider(_ref) {\n var _ref$theme = _ref.theme,\n partialTheme = _ref$theme === void 0 ? defaultPartialTheme : _ref$theme,\n children = _ref.children;\n var theme = usePartialTheme(partialTheme);\n return React.createElement(themeContext.Provider, {\n value: theme\n }, children);\n};\nThemeProvider.propTypes = {\n children: PropTypes.node.isRequired,\n theme: PropTypes.object\n};\nvar useTheme = function useTheme() {\n return useContext(themeContext);\n};\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$2(target, key, source[key]); }); } return target; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar enhancedSpring = function enhancedSpring(value, config) {\n if (typeof value !== 'number') {\n return {\n value: value,\n config: config,\n interpolator: config && config.interpolator ? config.interpolator : interpolate\n };\n }\n return spring(value, config);\n};\nvar SmartMotion =\nfunction (_PureComponent) {\n _inherits(SmartMotion, _PureComponent);\n function SmartMotion() {\n var _getPrototypeOf2;\n var _this;\n _classCallCheck(this, SmartMotion);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SmartMotion)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _defineProperty$2(_assertThisInitialized(_this), \"oldValues\", {});\n _defineProperty$2(_assertThisInitialized(_this), \"newInters\", {});\n _defineProperty$2(_assertThisInitialized(_this), \"currentStepValues\", {});\n _defineProperty$2(_assertThisInitialized(_this), \"stepValues\", {});\n _defineProperty$2(_assertThisInitialized(_this), \"stepInterpolators\", {});\n return _this;\n }\n _createClass(SmartMotion, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n style = _this$props.style,\n children = _this$props.children,\n rest = _objectWithoutProperties(_this$props, [\"style\", \"children\"]);\n var resolvedStyle = style(enhancedSpring);\n for (var key in resolvedStyle) {\n if (\n resolvedStyle[key] && resolvedStyle[key].interpolator) {\n this.currentStepValues[key] = this.currentStepValues[key] || 0;\n if (\n typeof this.newInters[key] === 'undefined' || resolvedStyle[key].value !== this.newInters[key].value) {\n this.newInters[key] = resolvedStyle[key];\n this.stepValues[key] = this.currentStepValues[key] + 1;\n this.stepInterpolators[key] = this.newInters[key].interpolator(this.oldValues[key], this.newInters[key].value);\n }\n resolvedStyle[key] = spring(this.stepValues[key], this.newInters[key].config);\n }\n }\n return React.createElement(Motion, _extends({}, rest, {\n style: resolvedStyle\n }), function (values) {\n var newValues = {};\n for (var _key2 in values) {\n if (_this2.stepValues[_key2]) {\n _this2.currentStepValues[_key2] = values[_key2];\n var percentage = _this2.currentStepValues[_key2] - _this2.stepValues[_key2] + 1;\n _this2.oldValues[_key2] = newValues[_key2] = _this2.stepInterpolators[_key2](percentage);\n }\n }\n return children(_objectSpread$2({}, values, newValues));\n });\n }\n }]);\n return SmartMotion;\n}(PureComponent);\n_defineProperty$2(SmartMotion, \"propTypes\", {\n children: PropTypes.func.isRequired,\n style: PropTypes.func.isRequired\n});\n\nvar motionConfigContext = createContext();\nvar MotionConfigProvider = function MotionConfigProvider(_ref) {\n var children = _ref.children,\n animate = _ref.animate,\n stiffness = _ref.stiffness,\n damping = _ref.damping;\n var value = useMemo(function () {\n return {\n animate: animate,\n springConfig: {\n stiffness: stiffness,\n damping: damping\n }\n };\n }, [animate, stiffness, damping]);\n return React.createElement(motionConfigContext.Provider, {\n value: value\n }, children);\n};\nMotionConfigProvider.propTypes = {\n children: PropTypes.node.isRequired,\n animate: PropTypes.bool.isRequired,\n stiffness: PropTypes.number.isRequired,\n damping: PropTypes.number.isRequired\n};\nMotionConfigProvider.defaultProps = {\n animate: true,\n stiffness: 90,\n damping: 15\n};\n\nvar useMotionConfig = function useMotionConfig() {\n return useContext(motionConfigContext);\n};\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$3(target, key, source[key]); }); } return target; }\nfunction _defineProperty$3(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nvar containerStyle = {\n position: 'relative'\n};\nvar tooltipStyle = {\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 10\n};\nvar Container = function Container(_ref) {\n var children = _ref.children,\n theme = _ref.theme,\n _ref$isInteractive = _ref.isInteractive,\n isInteractive = _ref$isInteractive === void 0 ? true : _ref$isInteractive,\n animate = _ref.animate,\n motionStiffness = _ref.motionStiffness,\n motionDamping = _ref.motionDamping;\n var containerEl = useRef(null);\n var _useState = useState({\n isTooltipVisible: false,\n tooltipContent: null,\n position: {}\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n var showTooltip = useCallback(function (content, event) {\n if (!containerEl) return;\n var bounds = containerEl.current.getBoundingClientRect();\n var clientX = event.clientX,\n clientY = event.clientY;\n var x = clientX - bounds.left;\n var y = clientY - bounds.top;\n var position = {};\n if (x < bounds.width / 2) position.left = x + 20;else position.right = bounds.width - x + 20;\n if (y < bounds.height / 2) position.top = y - 12;else position.bottom = bounds.height - y - 12;\n setState({\n isTooltipVisible: true,\n tooltipContent: content,\n position: position\n });\n }, [containerEl]);\n var hideTooltip = useCallback(function () {\n setState({\n isTooltipVisible: false,\n tooltipContent: null\n });\n });\n var isTooltipVisible = state.isTooltipVisible,\n tooltipContent = state.tooltipContent,\n position = state.position;\n var content;\n if (isInteractive === true) {\n content = React.createElement(\"div\", {\n style: containerStyle,\n ref: containerEl\n }, children({\n showTooltip: isInteractive ? showTooltip : noop,\n hideTooltip: isInteractive ? hideTooltip : noop\n }), isTooltipVisible && React.createElement(\"div\", {\n style: _objectSpread$3({}, tooltipStyle, position, theme.tooltip)\n }, tooltipContent));\n } else {\n content = children({\n showTooltip: isInteractive ? showTooltip : noop,\n hideTooltip: isInteractive ? hideTooltip : noop\n });\n }\n return React.createElement(themeContext.Provider, {\n value: theme\n }, React.createElement(MotionConfigProvider, {\n animate: animate,\n stiffness: motionStiffness,\n damping: motionDamping\n }, React.createElement(tooltipContext.Provider, {\n value: [showTooltip, hideTooltip]\n }, content)));\n};\nContainer.propTypes = {\n children: PropTypes.func.isRequired,\n isInteractive: PropTypes.bool,\n theme: PropTypes.object.isRequired,\n animate: PropTypes.bool.isRequired,\n motionStiffness: PropTypes.number,\n motionDamping: PropTypes.number\n};\n\nfunction _typeof$1(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\nfunction _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties$1(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass$1(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$1(Constructor.prototype, protoProps); if (staticProps) _defineProperties$1(Constructor, staticProps); return Constructor; }\nfunction _possibleConstructorReturn$1(self, call) { if (call && (_typeof$1(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized$1(self); }\nfunction _getPrototypeOf$1(o) { _getPrototypeOf$1 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf$1(o); }\nfunction _assertThisInitialized$1(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inherits$1(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf$1(subClass, superClass); }\nfunction _setPrototypeOf$1(o, p) { _setPrototypeOf$1 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf$1(o, p); }\nfunction _defineProperty$4(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar ResponsiveWrapper =\nfunction (_Component) {\n _inherits$1(ResponsiveWrapper, _Component);\n function ResponsiveWrapper() {\n var _getPrototypeOf2;\n var _this;\n _classCallCheck$1(this, ResponsiveWrapper);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _possibleConstructorReturn$1(this, (_getPrototypeOf2 = _getPrototypeOf$1(ResponsiveWrapper)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _defineProperty$4(_assertThisInitialized$1(_this), \"state\", {\n dimensions: {\n width: -1,\n height: -1\n }\n });\n return _this;\n }\n _createClass$1(ResponsiveWrapper, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$state$dimension = this.state.dimensions,\n width = _this$state$dimension.width,\n height = _this$state$dimension.height;\n var shouldRender = width > 0 && height > 0;\n return React.createElement(Measure, {\n bounds: true,\n onResize: function onResize(contentRect) {\n _this2.setState({\n dimensions: contentRect.bounds\n });\n }\n }, function (_ref) {\n var measureRef = _ref.measureRef;\n return React.createElement(\"div\", {\n ref: measureRef,\n style: {\n width: '100%',\n height: '100%'\n }\n }, shouldRender && _this2.props.children({\n width: width,\n height: height\n }));\n });\n }\n }]);\n return ResponsiveWrapper;\n}(Component);\n_defineProperty$4(ResponsiveWrapper, \"propTypes\", {\n children: PropTypes.func.isRequired\n});\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$5(target, key, source[key]); }); } return target; }\nfunction _defineProperty$5(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar LinearGradient = function LinearGradient(_ref) {\n var id = _ref.id,\n colors = _ref.colors;\n return React.createElement(\"linearGradient\", {\n id: id,\n x1: 0,\n x2: 0,\n y1: 0,\n y2: 1\n }, colors.map(function (_ref2) {\n var offset = _ref2.offset,\n color = _ref2.color,\n opacity = _ref2.opacity;\n return React.createElement(\"stop\", {\n key: offset,\n offset: \"\".concat(offset, \"%\"),\n stopColor: color,\n stopOpacity: opacity !== undefined ? opacity : 1\n });\n }));\n};\nLinearGradient.propTypes = {\n id: PropTypes.string.isRequired,\n colors: PropTypes.arrayOf(PropTypes.shape({\n offset: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired\n })).isRequired\n};\nvar linearGradientDef = function linearGradientDef(id, colors) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return _objectSpread$4({\n id: id,\n type: 'linearGradient',\n colors: colors\n }, options);\n};\n\nvar gradientTypes = {\n linearGradient: LinearGradient\n};\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$6(target, key, source[key]); }); } return target; }\nfunction _defineProperty$6(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar PatternDots = memo(function (_ref) {\n var id = _ref.id,\n background = _ref.background,\n color = _ref.color,\n size = _ref.size,\n padding = _ref.padding,\n stagger = _ref.stagger;\n var fullSize = size + padding;\n var radius = size / 2;\n var halfPadding = padding / 2;\n if (stagger === true) {\n fullSize = size * 2 + padding * 2;\n }\n return React.createElement(\"pattern\", {\n id: id,\n width: fullSize,\n height: fullSize,\n patternUnits: \"userSpaceOnUse\"\n }, React.createElement(\"rect\", {\n width: fullSize,\n height: fullSize,\n fill: background\n }), React.createElement(\"circle\", {\n cx: halfPadding + radius,\n cy: halfPadding + radius,\n r: radius,\n fill: color\n }), stagger && React.createElement(\"circle\", {\n cx: padding * 1.5 + size + radius,\n cy: padding * 1.5 + size + radius,\n r: radius,\n fill: color\n }));\n});\nPatternDots.displayName = 'PatternDots';\nPatternDots.propTypes = {\n id: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n background: PropTypes.string.isRequired,\n size: PropTypes.number.isRequired,\n padding: PropTypes.number.isRequired,\n stagger: PropTypes.bool.isRequired\n};\nPatternDots.defaultProps = {\n color: '#000000',\n background: '#ffffff',\n size: 4,\n padding: 4,\n stagger: false\n};\nvar patternDotsDef = function patternDotsDef(id) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _objectSpread$5({\n id: id,\n type: 'patternDots'\n }, options);\n};\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\nfunction _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _nonIterableRest$1(); }\nfunction _nonIterableRest$1() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit$1(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; }\nvar TWO_PI = Math.PI * 2;\nvar degreesToRadians = function degreesToRadians(degrees) {\n return degrees * Math.PI / 180;\n};\nvar radiansToDegrees = function radiansToDegrees(radians) {\n return 180 * radians / Math.PI;\n};\nvar midAngle = function midAngle(arc) {\n return arc.startAngle + (arc.endAngle - arc.startAngle) / 2;\n};\nvar positionFromAngle = function positionFromAngle(angle, distance) {\n return {\n x: Math.cos(angle) * distance,\n y: Math.sin(angle) * distance\n };\n};\nvar absoluteAngleDegrees = function absoluteAngleDegrees(angle) {\n var absAngle = angle % 360;\n if (absAngle < 0) {\n absAngle += 360;\n }\n return absAngle;\n};\nvar absoluteAngleRadians = function absoluteAngleRadians(angle) {\n return angle - TWO_PI * Math.floor((angle + Math.PI) / TWO_PI);\n};\nvar computeArcBoundingBox = function computeArcBoundingBox(ox, oy, radius, startAngle, endAngle) {\n var includeCenter = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n var points = [];\n var p0 = positionFromAngle(degreesToRadians(startAngle), radius);\n points.push([p0.x, p0.y]);\n var p1 = positionFromAngle(degreesToRadians(endAngle), radius);\n points.push([p1.x, p1.y]);\n for (var angle = Math.round(Math.min(startAngle, endAngle)); angle <= Math.round(Math.max(startAngle, endAngle)); angle++) {\n if (angle % 90 === 0) {\n var p = positionFromAngle(degreesToRadians(angle), radius);\n points.push([p.x, p.y]);\n }\n }\n points = points.map(function (_ref) {\n var _ref2 = _slicedToArray$1(_ref, 2),\n x = _ref2[0],\n y = _ref2[1];\n return [ox + x, oy + y];\n });\n if (includeCenter === true) points.push([ox, oy]);\n var xs = points.map(function (_ref3) {\n var _ref4 = _slicedToArray$1(_ref3, 1),\n x = _ref4[0];\n return x;\n });\n var ys = points.map(function (_ref5) {\n var _ref6 = _slicedToArray$1(_ref5, 2),\n y = _ref6[1];\n return y;\n });\n var x0 = Math.min.apply(Math, _toConsumableArray(xs));\n var x1 = Math.max.apply(Math, _toConsumableArray(xs));\n var y0 = Math.min.apply(Math, _toConsumableArray(ys));\n var y1 = Math.max.apply(Math, _toConsumableArray(ys));\n return {\n points: points,\n x: x0,\n y: y0,\n width: x1 - x0,\n height: y1 - y0\n };\n};\n\nvar textPropsByEngine = {\n svg: {\n align: {\n left: 'start',\n center: 'middle',\n right: 'end'\n },\n baseline: {\n top: 'text-before-edge',\n center: 'central',\n bottom: 'alphabetic'\n }\n },\n canvas: {\n align: {\n left: 'left',\n center: 'center',\n right: 'right'\n },\n baseline: {\n top: 'top',\n center: 'middle',\n bottom: 'bottom'\n }\n }\n};\n\nvar getPolarLabelProps = function getPolarLabelProps(radius, angle, rotation) {\n var engine = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'svg';\n var textProps = textPropsByEngine[engine];\n var _positionFromAngle = positionFromAngle(angle - Math.PI / 2, radius),\n x = _positionFromAngle.x,\n y = _positionFromAngle.y;\n var rotate = radiansToDegrees(angle);\n var align = textProps.align.center;\n var baseline = textProps.baseline.bottom;\n if (rotation > 0) {\n align = textProps.align.right;\n baseline = textProps.baseline.center;\n } else if (rotation < 0) {\n align = textProps.align.left;\n baseline = textProps.baseline.center;\n }\n if (rotation !== 0 && rotate > 180) {\n rotate -= 180;\n align = align === textProps.align.right ? textProps.align.left : textProps.align.right;\n }\n rotate += rotation;\n return {\n x: x,\n y: y,\n rotate: rotate,\n align: align,\n baseline: baseline\n };\n};\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$7(target, key, source[key]); }); } return target; }\nfunction _defineProperty$7(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar PatternLines = memo(function (_ref) {\n var id = _ref.id,\n _spacing = _ref.spacing,\n _rotation = _ref.rotation,\n background = _ref.background,\n color = _ref.color,\n lineWidth = _ref.lineWidth;\n var rotation = Math.round(_rotation) % 360;\n var spacing = Math.abs(_spacing);\n if (rotation > 180) rotation = rotation - 360;else if (rotation > 90) rotation = rotation - 180;else if (rotation < -180) rotation = rotation + 360;else if (rotation < -90) rotation = rotation + 180;\n var width = spacing;\n var height = spacing;\n var path;\n if (rotation === 0) {\n path = \"\\n M 0 0 L \".concat(width, \" 0\\n M 0 \").concat(height, \" L \").concat(width, \" \").concat(height, \"\\n \");\n } else if (rotation === 90) {\n path = \"\\n M 0 0 L 0 \".concat(height, \"\\n M \").concat(width, \" 0 L \").concat(width, \" \").concat(height, \"\\n \");\n } else {\n width = Math.abs(spacing / Math.sin(degreesToRadians(rotation)));\n height = spacing / Math.sin(degreesToRadians(90 - rotation));\n if (rotation > 0) {\n path = \"\\n M 0 \".concat(-height, \" L \").concat(width * 2, \" \").concat(height, \"\\n M \").concat(-width, \" \").concat(-height, \" L \").concat(width, \" \").concat(height, \"\\n M \").concat(-width, \" 0 L \").concat(width, \" \").concat(height * 2, \"\\n \");\n } else {\n path = \"\\n M \".concat(-width, \" \").concat(height, \" L \").concat(width, \" \").concat(-height, \"\\n M \").concat(-width, \" \").concat(height * 2, \" L \").concat(width * 2, \" \").concat(-height, \"\\n M 0 \").concat(height * 2, \" L \").concat(width * 2, \" 0\\n \");\n }\n }\n return React.createElement(\"pattern\", {\n id: id,\n width: width,\n height: height,\n patternUnits: \"userSpaceOnUse\"\n }, React.createElement(\"rect\", {\n width: width,\n height: height,\n fill: background,\n stroke: \"rgba(255, 0, 0, 0.1)\",\n strokeWidth: 0\n }), React.createElement(\"path\", {\n d: path,\n strokeWidth: lineWidth,\n stroke: color,\n strokeLinecap: \"square\"\n }));\n});\nPatternLines.displayName = 'PatternLines';\nPatternLines.propTypes = {\n id: PropTypes.string.isRequired,\n spacing: PropTypes.number.isRequired,\n rotation: PropTypes.number.isRequired,\n background: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n lineWidth: PropTypes.number.isRequired\n};\nPatternLines.defaultProps = {\n spacing: 5,\n rotation: 0,\n color: '#000000',\n background: '#ffffff',\n lineWidth: 2\n};\nvar patternLinesDef = function patternLinesDef(id) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _objectSpread$6({\n id: id,\n type: 'patternLines'\n }, options);\n};\n\nfunction _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$8(target, key, source[key]); }); } return target; }\nfunction _defineProperty$8(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar PatternSquares = memo(function (_ref) {\n var id = _ref.id,\n background = _ref.background,\n color = _ref.color,\n size = _ref.size,\n padding = _ref.padding,\n stagger = _ref.stagger;\n var fullSize = size + padding;\n var halfPadding = padding / 2;\n if (stagger === true) {\n fullSize = size * 2 + padding * 2;\n }\n return React.createElement(\"pattern\", {\n id: id,\n width: fullSize,\n height: fullSize,\n patternUnits: \"userSpaceOnUse\"\n }, React.createElement(\"rect\", {\n width: fullSize,\n height: fullSize,\n fill: background\n }), React.createElement(\"rect\", {\n x: halfPadding,\n y: halfPadding,\n width: size,\n height: size,\n fill: color\n }), stagger && React.createElement(\"rect\", {\n x: padding * 1.5 + size,\n y: padding * 1.5 + size,\n width: size,\n height: size,\n fill: color\n }));\n});\nPatternSquares.displayName = 'PatternSquares';\nPatternSquares.propTypes = {\n id: PropTypes.string.isRequired,\n color: PropTypes.string.isRequired,\n background: PropTypes.string.isRequired,\n size: PropTypes.number.isRequired,\n padding: PropTypes.number.isRequired,\n stagger: PropTypes.bool.isRequired\n};\nPatternSquares.defaultProps = {\n color: '#000000',\n background: '#ffffff',\n size: 4,\n padding: 4,\n stagger: false\n};\nvar patternSquaresDef = function patternSquaresDef(id) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return _objectSpread$7({\n id: id,\n type: 'patternSquares'\n }, options);\n};\n\nvar patternTypes = {\n patternDots: PatternDots,\n patternLines: PatternLines,\n patternSquares: PatternSquares\n};\n\nfunction _objectWithoutProperties$1(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$1(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose$1(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$9(target, key, source[key]); }); } return target; }\nfunction _defineProperty$9(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar defsMapping = _objectSpread$8({}, gradientTypes, patternTypes);\nvar Defs = function Defs(_ref) {\n var definitions = _ref.defs;\n if (!definitions || definitions.length < 1) return null;\n return React.createElement(\"defs\", null, definitions.map(function (_ref2) {\n var type = _ref2.type,\n def = _objectWithoutProperties$1(_ref2, [\"type\"]);\n if (defsMapping[type]) return React.createElement(defsMapping[type], _objectSpread$8({\n key: def.id\n }, def));\n return null;\n }));\n};\nDefs.propTypes = {\n defs: PropTypes.arrayOf(PropTypes.shape({\n type: PropTypes.oneOf(Object.keys(defsMapping)).isRequired,\n id: PropTypes.string.isRequired\n }))\n};\nvar Defs$1 = memo(Defs);\n\nvar SvgWrapper = function SvgWrapper(_ref) {\n var width = _ref.width,\n height = _ref.height,\n margin = _ref.margin,\n defs = _ref.defs,\n children = _ref.children;\n var theme = useTheme();\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n role: \"img\",\n width: width,\n height: height\n }, React.createElement(Defs$1, {\n defs: defs\n }), React.createElement(\"rect\", {\n width: width,\n height: height,\n fill: theme.background\n }), React.createElement(\"g\", {\n transform: \"translate(\".concat(margin.left, \",\").concat(margin.top, \")\")\n }, children));\n};\nSvgWrapper.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n margin: PropTypes.shape({\n top: PropTypes.number.isRequired,\n left: PropTypes.number.isRequired\n }).isRequired,\n defs: PropTypes.array,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired\n};\n\nvar DotsItemSymbol = function DotsItemSymbol(_ref) {\n var size = _ref.size,\n color = _ref.color,\n borderWidth = _ref.borderWidth,\n borderColor = _ref.borderColor;\n return React.createElement(\"circle\", {\n r: size / 2,\n fill: color,\n stroke: borderColor,\n strokeWidth: borderWidth,\n style: {\n pointerEvents: 'none'\n }\n });\n};\nDotsItemSymbol.propTypes = {\n size: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired,\n borderWidth: PropTypes.number.isRequired,\n borderColor: PropTypes.string.isRequired\n};\nvar DotsItemSymbol$1 = memo(DotsItemSymbol);\n\nvar DotsItem = function DotsItem(_ref) {\n var x = _ref.x,\n y = _ref.y,\n symbol = _ref.symbol,\n size = _ref.size,\n datum = _ref.datum,\n color = _ref.color,\n borderWidth = _ref.borderWidth,\n borderColor = _ref.borderColor,\n label = _ref.label,\n labelTextAnchor = _ref.labelTextAnchor,\n labelYOffset = _ref.labelYOffset,\n theme = _ref.theme;\n return React.createElement(\"g\", {\n transform: \"translate(\".concat(x, \", \").concat(y, \")\"),\n style: {\n pointerEvents: 'none'\n }\n }, React.createElement(symbol, {\n size: size,\n color: color,\n datum: datum,\n borderWidth: borderWidth,\n borderColor: borderColor\n }), label && React.createElement(\"text\", {\n textAnchor: labelTextAnchor,\n y: labelYOffset,\n style: theme.dots.text\n }, label));\n};\nDotsItem.propTypes = {\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n datum: PropTypes.object.isRequired,\n size: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired,\n borderWidth: PropTypes.number.isRequired,\n borderColor: PropTypes.string.isRequired,\n symbol: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n labelTextAnchor: PropTypes.oneOf(['start', 'middle', 'end']),\n labelYOffset: PropTypes.number.isRequired,\n theme: PropTypes.shape({\n dots: dotsThemePropType.isRequired\n }).isRequired\n};\nvar DotsItemDefaultProps = {\n symbol: DotsItemSymbol$1,\n labelTextAnchor: 'middle',\n labelYOffset: -12\n};\nDotsItem.defaultProps = DotsItemDefaultProps;\nvar DotsItem$1 = memo(DotsItem);\n\nvar computeLabel = function computeLabel(_ref) {\n var axis = _ref.axis,\n width = _ref.width,\n height = _ref.height,\n position = _ref.position,\n offsetX = _ref.offsetX,\n offsetY = _ref.offsetY,\n orientation = _ref.orientation;\n var x = 0;\n var y = 0;\n var rotation = orientation === 'vertical' ? -90 : 0;\n var textAnchor = 'start';\n if (axis === 'x') {\n switch (position) {\n case 'top-left':\n x = -offsetX;\n y = offsetY;\n textAnchor = 'end';\n break;\n case 'top':\n y = -offsetY;\n if (orientation === 'horizontal') {\n textAnchor = 'middle';\n } else {\n textAnchor = 'start';\n }\n break;\n case 'top-right':\n x = offsetX;\n y = offsetY;\n if (orientation === 'horizontal') {\n textAnchor = 'start';\n } else {\n textAnchor = 'end';\n }\n break;\n case 'right':\n x = offsetX;\n y = height / 2;\n if (orientation === 'horizontal') {\n textAnchor = 'start';\n } else {\n textAnchor = 'middle';\n }\n break;\n case 'bottom-right':\n x = offsetX;\n y = height - offsetY;\n textAnchor = 'start';\n break;\n case 'bottom':\n y = height + offsetY;\n if (orientation === 'horizontal') {\n textAnchor = 'middle';\n } else {\n textAnchor = 'end';\n }\n break;\n case 'bottom-left':\n y = height - offsetY;\n x = -offsetX;\n if (orientation === 'horizontal') {\n textAnchor = 'end';\n } else {\n textAnchor = 'start';\n }\n break;\n case 'left':\n x = -offsetX;\n y = height / 2;\n if (orientation === 'horizontal') {\n textAnchor = 'end';\n } else {\n textAnchor = 'middle';\n }\n break;\n }\n } else {\n switch (position) {\n case 'top-left':\n x = offsetX;\n y = -offsetY;\n textAnchor = 'start';\n break;\n case 'top':\n x = width / 2;\n y = -offsetY;\n if (orientation === 'horizontal') {\n textAnchor = 'middle';\n } else {\n textAnchor = 'start';\n }\n break;\n case 'top-right':\n x = width - offsetX;\n y = -offsetY;\n if (orientation === 'horizontal') {\n textAnchor = 'end';\n } else {\n textAnchor = 'start';\n }\n break;\n case 'right':\n x = width + offsetX;\n if (orientation === 'horizontal') {\n textAnchor = 'start';\n } else {\n textAnchor = 'middle';\n }\n break;\n case 'bottom-right':\n x = width - offsetX;\n y = offsetY;\n textAnchor = 'end';\n break;\n case 'bottom':\n x = width / 2;\n y = offsetY;\n if (orientation === 'horizontal') {\n textAnchor = 'middle';\n } else {\n textAnchor = 'end';\n }\n break;\n case 'bottom-left':\n x = offsetX;\n y = offsetY;\n if (orientation === 'horizontal') {\n textAnchor = 'start';\n } else {\n textAnchor = 'end';\n }\n break;\n case 'left':\n x = -offsetX;\n if (orientation === 'horizontal') {\n textAnchor = 'end';\n } else {\n textAnchor = 'middle';\n }\n break;\n }\n }\n return {\n x: x,\n y: y,\n rotation: rotation,\n textAnchor: textAnchor\n };\n};\nvar CartesianMarkersItem = function CartesianMarkersItem(_ref2) {\n var width = _ref2.width,\n height = _ref2.height,\n axis = _ref2.axis,\n scale = _ref2.scale,\n value = _ref2.value,\n lineStyle = _ref2.lineStyle,\n textStyle = _ref2.textStyle,\n legend = _ref2.legend,\n legendPosition = _ref2.legendPosition,\n legendOffsetX = _ref2.legendOffsetX,\n legendOffsetY = _ref2.legendOffsetY,\n legendOrientation = _ref2.legendOrientation;\n var theme = useTheme();\n var x = 0;\n var x2 = 0;\n var y = 0;\n var y2 = 0;\n if (axis === 'y') {\n y = scale(value);\n x2 = width;\n } else {\n x = scale(value);\n y2 = height;\n }\n var legendNode = null;\n if (legend) {\n var legendProps = computeLabel({\n axis: axis,\n width: width,\n height: height,\n position: legendPosition,\n offsetX: legendOffsetX,\n offsetY: legendOffsetY,\n orientation: legendOrientation\n });\n legendNode = React.createElement(\"text\", {\n transform: \"translate(\".concat(legendProps.x, \", \").concat(legendProps.y, \") rotate(\").concat(legendProps.rotation, \")\"),\n textAnchor: legendProps.textAnchor,\n dominantBaseline: \"central\",\n style: textStyle\n }, legend);\n }\n return React.createElement(\"g\", {\n transform: \"translate(\".concat(x, \", \").concat(y, \")\")\n }, React.createElement(\"line\", {\n x1: 0,\n x2: x2,\n y1: 0,\n y2: y2,\n stroke: theme.markers.lineColor,\n strokeWidth: theme.markers.lineStrokeWidth,\n style: lineStyle\n }), legendNode);\n};\nCartesianMarkersItem.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n scale: PropTypes.func.isRequired,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]).isRequired,\n lineStyle: PropTypes.object,\n textStyle: PropTypes.object,\n legend: PropTypes.string,\n legendPosition: PropTypes.oneOf(['top-left', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left']),\n legendOffsetX: PropTypes.number.isRequired,\n legendOffsetY: PropTypes.number.isRequired,\n legendOrientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired\n};\nCartesianMarkersItem.defaultProps = {\n legendPosition: 'top-right',\n legendOffsetX: 14,\n legendOffsetY: 14,\n legendOrientation: 'horizontal'\n};\nvar CartesianMarkersItem$1 = memo(CartesianMarkersItem);\n\nfunction _extends$1() { _extends$1 = 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; }; return _extends$1.apply(this, arguments); }\nvar CartesianMarkers = function CartesianMarkers(_ref) {\n var markers = _ref.markers,\n width = _ref.width,\n height = _ref.height,\n xScale = _ref.xScale,\n yScale = _ref.yScale;\n if (!markers || markers.length === 0) return null;\n return markers.map(function (marker, i) {\n return React.createElement(CartesianMarkersItem$1, _extends$1({\n key: i\n }, marker, {\n width: width,\n height: height,\n scale: marker.axis === 'y' ? yScale : xScale\n }));\n });\n};\nCartesianMarkers.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n xScale: PropTypes.func.isRequired,\n yScale: PropTypes.func.isRequired,\n markers: PropTypes.arrayOf(PropTypes.shape({\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]).isRequired,\n lineStyle: PropTypes.object,\n textStyle: PropTypes.object\n }))\n};\nvar CartesianMarkers$1 = memo(CartesianMarkers);\n\nfunction _defineProperty$a(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar withCurve = (function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$srcKey = _ref.srcKey,\n srcKey = _ref$srcKey === void 0 ? 'curve' : _ref$srcKey,\n _ref$destKey = _ref.destKey,\n destKey = _ref$destKey === void 0 ? 'curveInterpolator' : _ref$destKey;\n return withProps(function (props) {\n return _defineProperty$a({}, destKey, curveFromProp(props[srcKey]));\n });\n});\n\nvar withDimensions = (function () {\n return compose(defaultProps({\n margin: defaultMargin\n }), setPropTypes({\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n margin: marginPropType\n }), withPropsOnChange(function (props, nextProps) {\n return props.width !== nextProps.width || props.height !== nextProps.height || !isEqual(props.margin, nextProps.margin);\n }, function (props) {\n var margin = Object.assign({}, defaultMargin, props.margin);\n return {\n margin: margin,\n width: props.width - margin.left - margin.right,\n height: props.height - margin.top - margin.bottom,\n outerWidth: props.width,\n outerHeight: props.height\n };\n }));\n});\n\nvar getLabelGenerator = function getLabelGenerator(_label, labelFormat) {\n var getRawLabel = isFunction(_label) ? _label : function (d) {\n return get(d, _label);\n };\n var formatter;\n if (labelFormat) {\n formatter = isFunction(labelFormat) ? labelFormat : format(labelFormat);\n }\n if (formatter) return function (d) {\n return formatter(getRawLabel(d));\n };\n return getRawLabel;\n};\nvar getAccessorFor = function getAccessorFor(directive) {\n return isFunction(directive) ? directive : function (d) {\n return d[directive];\n };\n};\nvar getAccessorOrValue = function getAccessorOrValue(value) {\n return isFunction(value) ? value : function () {\n return value;\n };\n};\n\nfunction _defineProperty$b(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar withHierarchy = (function () {\n var _setPropTypes;\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$srcKey = _ref.srcKey,\n srcKey = _ref$srcKey === void 0 ? 'root' : _ref$srcKey,\n _ref$destKey = _ref.destKey,\n destKey = _ref$destKey === void 0 ? 'root' : _ref$destKey,\n _ref$valueKey = _ref.valueKey,\n valueKey = _ref$valueKey === void 0 ? 'value' : _ref$valueKey,\n _ref$valueDefault = _ref.valueDefault,\n valueDefault = _ref$valueDefault === void 0 ? 'value' : _ref$valueDefault;\n return compose(defaultProps(_defineProperty$b({}, valueKey, valueDefault)), setPropTypes((_setPropTypes = {}, _defineProperty$b(_setPropTypes, srcKey, PropTypes.object.isRequired), _defineProperty$b(_setPropTypes, valueKey, PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired), _setPropTypes)), withPropsOnChange([srcKey, valueKey], function (props) {\n return _defineProperty$b({}, destKey, hierarchy(props[srcKey]).sum(getAccessorFor(props[valueKey])));\n }));\n});\n\nvar withMotion = (function () {\n return compose(setPropTypes(motionPropTypes), defaultProps({\n animate: defaultAnimate,\n motionDamping: defaultMotionDamping,\n motionStiffness: defaultMotionStiffness\n }), withPropsOnChange(['motionDamping', 'motionStiffness'], function (_ref) {\n var motionDamping = _ref.motionDamping,\n motionStiffness = _ref.motionStiffness;\n return {\n boundSpring: partialRight(spring, {\n damping: motionDamping,\n stiffness: motionStiffness\n })\n };\n }));\n});\n\nfunction _defineProperty$c(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar withTheme = (function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$srcKey = _ref.srcKey,\n srcKey = _ref$srcKey === void 0 ? 'theme' : _ref$srcKey,\n _ref$destKey = _ref.destKey,\n destKey = _ref$destKey === void 0 ? 'theme' : _ref$destKey;\n return compose(setPropTypes(_defineProperty$c({}, srcKey, PropTypes.object)), withPropsOnChange([srcKey], function (props) {\n return _defineProperty$c({}, destKey, extendDefaultTheme(defaultTheme, props[srcKey]));\n }));\n});\n\nfunction _typeof$2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\nfunction _objectWithoutProperties$2(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$2(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose$2(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _classCallCheck$2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties$2(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass$2(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$2(Constructor.prototype, protoProps); if (staticProps) _defineProperties$2(Constructor, staticProps); return Constructor; }\nfunction _possibleConstructorReturn$2(self, call) { if (call && (_typeof$2(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized$2(self); }\nfunction _assertThisInitialized$2(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _getPrototypeOf$2(o) { _getPrototypeOf$2 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf$2(o); }\nfunction _inherits$2(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf$2(subClass, superClass); }\nfunction _setPrototypeOf$2(o, p) { _setPrototypeOf$2 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf$2(o, p); }\nvar containerStyle$1 = {\n position: 'relative'\n};\nvar Container$1 = function Container(_ref) {\n var theme = _ref.theme,\n _ref$renderWrapper = _ref.renderWrapper,\n renderWrapper = _ref$renderWrapper === void 0 ? true : _ref$renderWrapper,\n children = _ref.children,\n animate = _ref.animate,\n motionStiffness = _ref.motionStiffness,\n motionDamping = _ref.motionDamping;\n var container = useRef(null);\n var _useTooltipHandlers = useTooltipHandlers(container),\n showTooltipAt = _useTooltipHandlers.showTooltipAt,\n showTooltipFromEvent = _useTooltipHandlers.showTooltipFromEvent,\n hideTooltip = _useTooltipHandlers.hideTooltip,\n isTooltipVisible = _useTooltipHandlers.isTooltipVisible,\n tooltipContent = _useTooltipHandlers.tooltipContent,\n tooltipPosition = _useTooltipHandlers.tooltipPosition,\n tooltipAnchor = _useTooltipHandlers.tooltipAnchor;\n return React.createElement(ThemeProvider, {\n theme: theme\n }, React.createElement(MotionConfigProvider, {\n animate: animate,\n stiffness: motionStiffness,\n damping: motionDamping\n }, React.createElement(tooltipContext.Provider, {\n value: {\n showTooltipAt: showTooltipAt,\n showTooltipFromEvent: showTooltipFromEvent,\n hideTooltip: hideTooltip\n }\n }, renderWrapper === true && React.createElement(\"div\", {\n style: containerStyle$1,\n ref: container\n }, children, isTooltipVisible && React.createElement(TooltipWrapper, {\n position: tooltipPosition,\n anchor: tooltipAnchor\n }, tooltipContent)), renderWrapper !== true && children)));\n};\nContainer$1.propTypes = {\n children: PropTypes.node.isRequired,\n theme: PropTypes.object,\n animate: PropTypes.bool,\n motionStiffness: PropTypes.number,\n motionDamping: PropTypes.number,\n renderWrapper: PropTypes.bool\n};\nvar withContainer = function withContainer(WrappedComponent) {\n return (\n function (_Component) {\n _inherits$2(_class, _Component);\n function _class() {\n _classCallCheck$2(this, _class);\n return _possibleConstructorReturn$2(this, _getPrototypeOf$2(_class).apply(this, arguments));\n }\n _createClass$2(_class, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n theme = _this$props.theme,\n renderWrapper = _this$props.renderWrapper,\n childProps = _objectWithoutProperties$2(_this$props, [\"theme\", \"renderWrapper\"]);\n return React.createElement(Container$1, {\n theme: theme,\n renderWrapper: renderWrapper,\n animate: childProps.animate,\n motionStiffness: childProps.motionStiffness,\n motionDamping: childProps.motionDamping\n }, React.createElement(WrappedComponent, childProps));\n }\n }]);\n return _class;\n }(Component)\n );\n};\n\nvar boxAlignments = ['center', 'top-left', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left'];\nvar alignBox = function alignBox(box, container, alignment) {\n var deltaX = container.width - box.width;\n var deltaY = container.height - box.height;\n var x = 0;\n var y = 0;\n if (alignment === 'center') {\n x = deltaX / 2;\n y = deltaY / 2;\n }\n if (alignment === 'top') {\n x = deltaX / 2;\n }\n if (alignment === 'top-right') {\n x = deltaX;\n }\n if (alignment === 'right') {\n x = deltaX;\n y = deltaY / 2;\n }\n if (alignment === 'bottom-right') {\n x = deltaX;\n y = deltaY;\n }\n if (alignment === 'bottom') {\n x = deltaX / 2;\n y = deltaY;\n }\n if (alignment === 'bottom-left') {\n y = deltaY;\n }\n if (alignment === 'left') {\n y = deltaY / 2;\n }\n return [x, y];\n};\n\nvar getDistance = function getDistance(x1, y1, x2, y2) {\n var deltaX = x2 - x1;\n var deltaY = y2 - y1;\n deltaX *= deltaX;\n deltaY *= deltaY;\n return Math.sqrt(deltaX + deltaY);\n};\nvar getAngle = function getAngle(x1, y1, x2, y2) {\n var angle = Math.atan2(y2 - y1, x2 - x1) - Math.PI / 2;\n return angle > 0 ? angle : Math.PI * 2 + angle;\n};\nvar isCursorInRect = function isCursorInRect(x, y, width, height, cursorX, cursorY) {\n return x <= cursorX && cursorX <= x + width && y <= cursorY && cursorY <= y + height;\n};\nvar isCursorInRing = function isCursorInRing(centerX, centerY, radius, innerRadius, cursorX, cursorY) {\n var distance = getDistance(cursorX, cursorY, centerX, centerY);\n return distance < radius && distance > innerRadius;\n};\nvar getHoveredArc = function getHoveredArc(centerX, centerY, radius, innerRadius, arcs, cursorX, cursorY) {\n if (!isCursorInRing(centerX, centerY, radius, innerRadius, cursorX, cursorY)) return null;\n var cursorAngle = getAngle(cursorX, cursorY, centerX, centerY);\n return arcs.find(function (_ref) {\n var startAngle = _ref.startAngle,\n endAngle = _ref.endAngle;\n return cursorAngle >= startAngle && cursorAngle < endAngle;\n });\n};\n\nvar getRelativeCursor = function getRelativeCursor(el, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n var bounds = el.getBoundingClientRect();\n return [clientX - bounds.left, clientY - bounds.top];\n};\n\nfunction _objectSpread$9(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$d(target, key, source[key]); }); } return target; }\nfunction _defineProperty$d(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toConsumableArray$1(arr) { return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _nonIterableSpread$1(); }\nfunction _nonIterableSpread$1() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray$1(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\nvar gradientKeys = Object.keys(gradientTypes);\nvar patternKeys = Object.keys(patternTypes);\nvar isMatchingDef = function isMatchingDef(predicate, node, dataKey) {\n if (predicate === '*') {\n return true;\n } else if (isFunction(predicate)) {\n return predicate(node);\n } else if (isPlainObject(predicate)) {\n var data = dataKey ? get(node, dataKey) : node;\n return isEqual(pick(data, Object.keys(predicate)), predicate);\n }\n return false;\n};\nvar bindDefs = function bindDefs(defs, nodes, rules) {\n var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n dataKey = _ref.dataKey,\n _ref$colorKey = _ref.colorKey,\n colorKey = _ref$colorKey === void 0 ? 'color' : _ref$colorKey,\n _ref$targetKey = _ref.targetKey,\n targetKey = _ref$targetKey === void 0 ? 'fill' : _ref$targetKey;\n var boundDefs = [];\n var generatedIds = {};\n if (defs.length && nodes.length) {\n boundDefs = _toConsumableArray$1(defs);\n nodes.forEach(function (node) {\n var _loop = function _loop(i) {\n var _rules$i = rules[i],\n id = _rules$i.id,\n match = _rules$i.match;\n if (isMatchingDef(match, node, dataKey)) {\n var def = defs.find(function (_ref2) {\n var defId = _ref2.id;\n return defId === id;\n });\n if (def) {\n if (patternKeys.includes(def.type)) {\n if (def.background === 'inherit' || def.color === 'inherit') {\n var nodeColor = get(node, colorKey);\n var background = def.background;\n var color = def.color;\n var inheritedId = id;\n if (def.background === 'inherit') {\n inheritedId = \"\".concat(inheritedId, \".bg.\").concat(nodeColor);\n background = nodeColor;\n }\n if (def.color === 'inherit') {\n inheritedId = \"\".concat(inheritedId, \".fg.\").concat(nodeColor);\n color = nodeColor;\n }\n set(node, targetKey, \"url(#\".concat(inheritedId, \")\"));\n if (!generatedIds[inheritedId]) {\n boundDefs.push(_objectSpread$9({}, def, {\n id: inheritedId,\n background: background,\n color: color\n }));\n generatedIds[inheritedId] = 1;\n }\n } else {\n set(node, targetKey, \"url(#\".concat(id, \")\"));\n }\n } else if (gradientKeys.includes(def.type)) {\n var allColors = def.colors.map(function (_ref3) {\n var color = _ref3.color;\n return color;\n });\n if (allColors.includes('inherit')) {\n var _nodeColor = get(node, colorKey);\n var _inheritedId = id;\n var inheritedDef = _objectSpread$9({}, def, {\n colors: def.colors.map(function (colorStop, i) {\n if (colorStop.color !== 'inherit') return colorStop;\n _inheritedId = \"\".concat(_inheritedId, \".\").concat(i, \".\").concat(_nodeColor);\n return _objectSpread$9({}, colorStop, {\n color: colorStop.color === 'inherit' ? _nodeColor : colorStop.color\n });\n })\n });\n inheritedDef.id = _inheritedId;\n set(node, targetKey, \"url(#\".concat(_inheritedId, \")\"));\n if (!generatedIds[_inheritedId]) {\n boundDefs.push(inheritedDef);\n generatedIds[_inheritedId] = 1;\n }\n } else {\n set(node, targetKey, \"url(#\".concat(id, \")\"));\n }\n }\n }\n return \"break\";\n }\n };\n for (var i = 0; i < rules.length; i++) {\n var _ret = _loop(i);\n if (_ret === \"break\") break;\n }\n });\n }\n return boundDefs;\n};\n\nexport { CartesianMarkers$1 as CartesianMarkers, CartesianMarkersItem$1 as CartesianMarkersItem, Container, Defs$1 as Defs, DotsItem$1 as DotsItem, DotsItemDefaultProps, LinearGradient, MotionConfigProvider, PatternDots, PatternLines, PatternSquares, ResponsiveWrapper, SmartMotion, SvgWrapper, TWO_PI, ThemeProvider, absoluteAngleDegrees, absoluteAngleRadians, alignBox, annotationsPropType, areaCurvePropKeys, areaCurvePropType, axisThemePropType, bindDefs, blendModePropType, blendModes, boxAlignments, closedCurvePropKeys, closedCurvePropType, colorInterpolatorIds, colorInterpolators, colorSchemeIds, computeArcBoundingBox, crosshairPropType, curveFromProp, curvePropKeys, curvePropMapping, curvePropType, defaultAnimate, defaultCategoricalColors, defaultColorRange, defaultMargin, defaultMotionDamping, defaultMotionStiffness, defaultTheme, defsPropTypes, degreesToRadians, dotsThemePropType, extendDefaultTheme, getAccessorFor, getAccessorOrValue, getAngle, getColorScale, getDistance, getHoveredArc, getLabelGenerator, getPolarLabelProps, getRelativeCursor, getValueFormatter, gradientTypes, gridThemePropType, guessQuantizeColorScale, isCursorInRect, isCursorInRing, isMatchingDef, labelsThemePropType, legendsThemePropType, lineCurvePropKeys, lineCurvePropType, linearGradientDef, marginPropType, markersThemePropType, midAngle, motionConfigContext, motionPropTypes, nivoCategoricalColors, noop, patternDotsDef, patternLinesDef, patternSquaresDef, patternTypes, positionFromAngle, quantizeColorScalePropType, quantizeColorScales, quantizeColorScalesKeys, radiansToDegrees, stackOffsetFromProp, stackOffsetPropKeys, stackOffsetPropMapping, stackOffsetPropType, stackOrderFromProp, stackOrderPropKeys, stackOrderPropMapping, stackOrderPropType, textPropsByEngine, themeContext, themePropType, treeMapTileFromProp, treeMapTilePropKeys, treeMapTilePropMapping, treeMapTilePropType, useCurveInterpolation, useDimensions, useMotionConfig, usePartialTheme, useTheme, useValueFormatter, withContainer, withCurve, withDimensions, withHierarchy, withMotion, withTheme };\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\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","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\nvar _Motion = require('./Motion');\n\nexports.Motion = _interopRequire(_Motion);\n\nvar _StaggeredMotion = require('./StaggeredMotion');\n\nexports.StaggeredMotion = _interopRequire(_StaggeredMotion);\n\nvar _TransitionMotion = require('./TransitionMotion');\n\nexports.TransitionMotion = _interopRequire(_TransitionMotion);\n\nvar _spring = require('./spring');\n\nexports.spring = _interopRequire(_spring);\n\nvar _presets = require('./presets');\n\nexports.presets = _interopRequire(_presets);\n\nvar _stripStyle = require('./stripStyle');\n\nexports.stripStyle = _interopRequire(_stripStyle);\n\n// deprecated, dummy warning function\n\nvar _reorderKeys = require('./reorderKeys');\n\nexports.reorderKeys = _interopRequire(_reorderKeys);","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","function _extends() {\n module.exports = _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\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","/**\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","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","module.exports = require(\"regenerator-runtime\");\n","export default function(x) {\n return function constant() {\n return x;\n };\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 R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\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","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import React, { memo, useState, useMemo, createContext, useCallback, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Measure from 'react-measure';\nimport { Motion, spring } from 'react-motion';\nimport { useTheme, useMotionConfig, useValueFormatter } from '@nivo/core';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nvar TOOLTIP_OFFSET = 14;\nvar tooltipStyle = {\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 10,\n top: 0,\n left: 0\n};\nvar TooltipWrapper = memo(function (_ref) {\n var position = _ref.position,\n anchor = _ref.anchor,\n children = _ref.children;\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n dimensions = _useState2[0],\n setDimensions = _useState2[1];\n var theme = useTheme();\n var _useMotionConfig = useMotionConfig(),\n animate = _useMotionConfig.animate,\n springConfig = _useMotionConfig.springConfig;\n var x = Math.round(position[0]);\n var y = Math.round(position[1]);\n if (dimensions !== null) {\n if (anchor === 'top') {\n x -= dimensions[0] / 2;\n y -= dimensions[1] + TOOLTIP_OFFSET;\n } else if (anchor === 'right') {\n x += TOOLTIP_OFFSET;\n y -= dimensions[1] / 2;\n } else if (anchor === 'bottom') {\n x -= dimensions[0] / 2;\n y += TOOLTIP_OFFSET;\n } else if (anchor === 'left') {\n x -= dimensions[0] + TOOLTIP_OFFSET;\n y -= dimensions[1] / 2;\n } else if (anchor === 'center') {\n x -= dimensions[0] / 2;\n y -= dimensions[1] / 2;\n }\n }\n var style = useMemo(function () {\n return _objectSpread({}, tooltipStyle, theme.tooltip, {\n transform: \"translate(\".concat(x, \"px, \").concat(y, \"px)\"),\n opacity: dimensions === null ? 0 : 1\n });\n }, [x, y, dimensions, theme.tooltip]);\n if (animate !== true || dimensions === null) {\n return React.createElement(Measure, {\n client: false,\n offset: false,\n bounds: true,\n margin: false,\n onResize: function onResize(_ref2) {\n var bounds = _ref2.bounds;\n setDimensions([bounds.width, bounds.height]);\n }\n }, function (_ref3) {\n var measureRef = _ref3.measureRef;\n return React.createElement(\"div\", {\n ref: measureRef,\n style: style\n }, children);\n });\n }\n return React.createElement(Motion, {\n style: {\n x: spring(x, springConfig),\n y: spring(y, springConfig)\n }\n }, function (animatedPosition) {\n return React.createElement(Measure, {\n client: false,\n offset: false,\n bounds: true,\n margin: false,\n onResize: function onResize(_ref4) {\n var bounds = _ref4.bounds;\n setDimensions([bounds.width, bounds.height]);\n }\n }, function (_ref5) {\n var measureRef = _ref5.measureRef;\n return React.createElement(\"div\", {\n ref: measureRef,\n style: _objectSpread({}, tooltipStyle, theme.tooltip, {\n transform: \"translate3d(\".concat(animatedPosition.x, \"px, \").concat(animatedPosition.y, \"px, 0)\")\n })\n }, children);\n });\n });\n});\nTooltipWrapper.displayName = 'TooltipWrapper';\nTooltipWrapper.propTypes = {\n position: PropTypes.array.isRequired,\n anchor: PropTypes.oneOf(['top', 'right', 'bottom', 'left', 'center']).isRequired,\n children: PropTypes.node.isRequired\n};\nTooltipWrapper.defaultProps = {\n anchor: 'top'\n};\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; }\nfunction _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar Chip = memo(function (_ref) {\n var size = _ref.size,\n color = _ref.color,\n style = _ref.style;\n return React.createElement(\"span\", {\n style: _objectSpread$1({\n display: 'block',\n width: size,\n height: size,\n background: color\n }, style)\n });\n});\nChip.propTypes = {\n size: PropTypes.number.isRequired,\n color: PropTypes.string.isRequired,\n style: PropTypes.object.isRequired\n};\nChip.defaultProps = {\n size: 12,\n style: {}\n};\nChip.displayName = 'Chip';\n\nvar BasicTooltip = memo(function (_ref) {\n var id = _ref.id,\n _value = _ref.value,\n format = _ref.format,\n enableChip = _ref.enableChip,\n color = _ref.color,\n renderContent = _ref.renderContent;\n var theme = useTheme();\n var formatValue = useValueFormatter(format);\n var content;\n if (typeof renderContent === 'function') {\n content = renderContent();\n } else {\n var value = _value;\n if (formatValue !== undefined && value !== undefined) {\n value = formatValue(value);\n }\n content = React.createElement(\"div\", {\n style: theme.tooltip.basic\n }, enableChip && React.createElement(Chip, {\n color: color,\n style: theme.tooltip.chip\n }), value !== undefined ? React.createElement(\"span\", null, id, \": \", React.createElement(\"strong\", null, isNaN(value) ? String(value) : value)) : id);\n }\n return React.createElement(\"div\", {\n style: theme.tooltip.container\n }, content);\n});\nBasicTooltip.displayName = 'BasicTooltip';\nBasicTooltip.propTypes = {\n id: PropTypes.node.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n enableChip: PropTypes.bool.isRequired,\n color: PropTypes.string,\n format: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n renderContent: PropTypes.func\n};\nBasicTooltip.defaultProps = {\n enableChip: false\n};\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$2(target, key, source[key]); }); } return target; }\nfunction _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar tableStyle = {\n width: '100%',\n borderCollapse: 'collapse'\n};\nvar TableTooltip = memo(function (_ref) {\n var title = _ref.title,\n rows = _ref.rows,\n renderContent = _ref.renderContent;\n var theme = useTheme();\n if (!rows.length) return null;\n var content;\n if (typeof renderContent === 'function') {\n content = renderContent();\n } else {\n content = React.createElement(\"div\", null, title && title, React.createElement(\"table\", {\n style: _objectSpread$2({}, tableStyle, theme.tooltip.table)\n }, React.createElement(\"tbody\", null, rows.map(function (row, i) {\n return React.createElement(\"tr\", {\n key: i\n }, row.map(function (column, j) {\n return React.createElement(\"td\", {\n key: j,\n style: theme.tooltip.tableCell\n }, column);\n }));\n }))));\n }\n return React.createElement(\"div\", {\n style: theme.tooltip.container\n }, content);\n});\nTableTooltip.propTypes = {\n title: PropTypes.node,\n rows: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.node)).isRequired,\n renderContent: PropTypes.func\n};\nTableTooltip.displayName = 'TableTooltip';\n\nvar crosshairTypes = ['x', 'y', 'top-left', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'cross'];\nvar crosshairPropTypes = {\n type: PropTypes.oneOf(crosshairTypes)\n};\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$3(target, key, source[key]); }); } return target; }\nfunction _defineProperty$3(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar CrosshairLine = memo(function (_ref) {\n var x0 = _ref.x0,\n x1 = _ref.x1,\n y0 = _ref.y0,\n y1 = _ref.y1;\n var theme = useTheme();\n var _useMotionConfig = useMotionConfig(),\n animate = _useMotionConfig.animate,\n springConfig = _useMotionConfig.springConfig;\n var style = useMemo(function () {\n return _objectSpread$3({}, theme.crosshair.line, {\n pointerEvents: 'none'\n });\n }, [theme.crosshair.line]);\n if (animate !== true) {\n return React.createElement(\"line\", {\n x1: x0,\n x2: x1,\n y1: y0,\n y2: y1,\n fill: \"none\",\n style: style\n });\n }\n return React.createElement(Motion, {\n style: {\n x0: spring(x0, springConfig),\n x1: spring(x1, springConfig),\n y0: spring(y0, springConfig),\n y1: spring(y1, springConfig)\n }\n }, function (line) {\n return React.createElement(\"line\", {\n x1: line.x0,\n x2: line.x1,\n y1: line.y0,\n y2: line.y1,\n fill: \"none\",\n style: style\n });\n });\n});\nCrosshairLine.displayName = 'CrosshairLine';\nCrosshairLine.propTypes = {\n x0: PropTypes.number.isRequired,\n x1: PropTypes.number.isRequired,\n y0: PropTypes.number.isRequired,\n y1: PropTypes.number.isRequired\n};\n\nvar Crosshair = memo(function (_ref) {\n var width = _ref.width,\n height = _ref.height,\n type = _ref.type,\n x = _ref.x,\n y = _ref.y;\n var xLine;\n var yLine;\n if (type === 'cross') {\n xLine = {\n x0: x,\n x1: x,\n y0: 0,\n y1: height\n };\n yLine = {\n x0: 0,\n x1: width,\n y0: y,\n y1: y\n };\n } else if (type === 'top-left') {\n xLine = {\n x0: x,\n x1: x,\n y0: 0,\n y1: y\n };\n yLine = {\n x0: 0,\n x1: x,\n y0: y,\n y1: y\n };\n } else if (type === 'top') {\n xLine = {\n x0: x,\n x1: x,\n y0: 0,\n y1: y\n };\n } else if (type === 'top-right') {\n xLine = {\n x0: x,\n x1: x,\n y0: 0,\n y1: y\n };\n yLine = {\n x0: x,\n x1: width,\n y0: y,\n y1: y\n };\n } else if (type === 'right') {\n yLine = {\n x0: x,\n x1: width,\n y0: y,\n y1: y\n };\n } else if (type === 'bottom-right') {\n xLine = {\n x0: x,\n x1: x,\n y0: y,\n y1: height\n };\n yLine = {\n x0: x,\n x1: width,\n y0: y,\n y1: y\n };\n } else if (type === 'bottom') {\n xLine = {\n x0: x,\n x1: x,\n y0: y,\n y1: height\n };\n } else if (type === 'bottom-left') {\n xLine = {\n x0: x,\n x1: x,\n y0: y,\n y1: height\n };\n yLine = {\n x0: 0,\n x1: x,\n y0: y,\n y1: y\n };\n } else if (type === 'left') {\n yLine = {\n x0: 0,\n x1: x,\n y0: y,\n y1: y\n };\n } else if (type === 'x') {\n xLine = {\n x0: x,\n x1: x,\n y0: 0,\n y1: height\n };\n } else if (type === 'y') {\n yLine = {\n x0: 0,\n x1: width,\n y0: y,\n y1: y\n };\n }\n return React.createElement(React.Fragment, null, xLine && React.createElement(CrosshairLine, {\n x0: xLine.x0,\n x1: xLine.x1,\n y0: xLine.y0,\n y1: xLine.y1\n }), yLine && React.createElement(CrosshairLine, {\n x0: yLine.x0,\n x1: yLine.x1,\n y0: yLine.y0,\n y1: yLine.y1\n }));\n});\nCrosshair.displayName = 'Crosshair';\nCrosshair.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n type: crosshairPropTypes.type.isRequired\n};\nCrosshair.defaultProps = {\n type: 'cross'\n};\n\nvar tooltipContext = createContext();\n\nfunction _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _nonIterableRest$1(); }\nfunction _nonIterableRest$1() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit$1(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; }\nvar useTooltipHandlers = function useTooltipHandlers(container) {\n var _useState = useState({\n isVisible: false,\n content: null,\n position: {}\n }),\n _useState2 = _slicedToArray$1(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n var showTooltipAt = useCallback(function (content, _ref, anchor) {\n var _ref2 = _slicedToArray$1(_ref, 2),\n x = _ref2[0],\n y = _ref2[1];\n setState({\n isVisible: true,\n position: [x, y],\n anchor: anchor,\n content: content\n });\n }, []);\n var showTooltipFromEvent = useCallback(function (content, event, anchor) {\n var bounds = container.current.getBoundingClientRect();\n var x = event.clientX - bounds.left;\n var y = event.clientY - bounds.top;\n if (anchor === 'left' || anchor === 'right') {\n if (x < bounds.width / 2) anchor = 'right';else anchor = 'left';\n }\n setState({\n isVisible: true,\n position: [x, y],\n anchor: anchor,\n content: content\n });\n }, [container]);\n var hideTooltip = useCallback(function () {\n setState({\n isVisible: false,\n content: null\n });\n });\n return {\n showTooltipAt: showTooltipAt,\n showTooltipFromEvent: showTooltipFromEvent,\n hideTooltip: hideTooltip,\n isTooltipVisible: state.isVisible,\n tooltipPosition: state.position,\n tooltipAnchor: state.anchor,\n tooltipContent: state.content\n };\n};\nvar useTooltip = function useTooltip() {\n return useContext(tooltipContext);\n};\n\nexport { BasicTooltip, Chip, Crosshair, TableTooltip, TooltipWrapper, crosshairPropTypes, crosshairTypes, tooltipContext, useTooltip, useTooltipHandlers };\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","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\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","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","'use strict';\nvar types = [\n require('./nextTick'),\n require('./queueMicrotask'),\n require('./mutation.js'),\n require('./messageChannel'),\n require('./stateChange'),\n require('./timeout')\n];\nvar draining;\nvar currentQueue;\nvar queueIndex = -1;\nvar queue = [];\nvar scheduled = false;\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 nextTick();\n }\n}\n\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n if (draining) {\n return;\n }\n scheduled = false;\n draining = true;\n var len = queue.length;\n var timeout = setTimeout(cleanUpNextTick);\n while (len) {\n currentQueue = queue;\n queue = [];\n while (currentQueue && ++queueIndex < len) {\n currentQueue[queueIndex].run();\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n queueIndex = -1;\n draining = false;\n clearTimeout(timeout);\n}\nvar scheduleDrain;\nvar i = -1;\nvar len = types.length;\nwhile (++i < len) {\n if (types[i] && types[i].test && types[i].test()) {\n scheduleDrain = types[i].install(nextTick);\n break;\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 var fun = this.fun;\n var array = this.array;\n switch (array.length) {\n case 0:\n return fun();\n case 1:\n return fun(array[0]);\n case 2:\n return fun(array[0], array[1]);\n case 3:\n return fun(array[0], array[1], array[2]);\n default:\n return fun.apply(null, array);\n }\n\n};\nmodule.exports = immediate;\nfunction immediate(task) {\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(task, args));\n if (!scheduled && !draining) {\n scheduled = true;\n scheduleDrain();\n }\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import React, { memo, useMemo, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { Motion, spring, TransitionMotion } from 'react-motion';\nimport { textPropsByEngine, useTheme, useMotionConfig } from '@nivo/core';\nimport isNumber from 'lodash/isNumber';\nimport { timeMillisecond, utcMillisecond, timeSecond, utcSecond, timeMinute, utcMinute, timeHour, utcHour, timeDay, utcDay, timeWeek, utcWeek, timeSunday, utcSunday, timeMonday, utcMonday, timeTuesday, utcTuesday, timeWednesday, utcWednesday, timeThursday, utcThursday, timeFriday, utcFriday, timeSaturday, utcSaturday, timeMonth, utcMonth, timeYear, utcYear } from 'd3-time';\nimport { timeFormat } from 'd3-time-format';\nimport { format } from 'd3-format';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar centerScale = function centerScale(scale) {\n var bandwidth = scale.bandwidth();\n if (bandwidth === 0) return scale;\n var offset = bandwidth / 2;\n if (scale.round()) {\n offset = Math.round(offset);\n }\n return function (d) {\n return scale(d) + offset;\n };\n};\nvar timeByType = {\n millisecond: [timeMillisecond, utcMillisecond],\n second: [timeSecond, utcSecond],\n minute: [timeMinute, utcMinute],\n hour: [timeHour, utcHour],\n day: [timeDay, utcDay],\n week: [timeWeek, utcWeek],\n sunday: [timeSunday, utcSunday],\n monday: [timeMonday, utcMonday],\n tuesday: [timeTuesday, utcTuesday],\n wednesday: [timeWednesday, utcWednesday],\n thursday: [timeThursday, utcThursday],\n friday: [timeFriday, utcFriday],\n saturday: [timeSaturday, utcSaturday],\n month: [timeMonth, utcMonth],\n year: [timeYear, utcYear]\n};\nvar timeTypes = Object.keys(timeByType);\nvar timeIntervalRegexp = new RegExp(\"^every\\\\s*(\\\\d+)?\\\\s*(\".concat(timeTypes.join('|'), \")s?$\"), 'i');\nvar getScaleTicks = function getScaleTicks(scale, spec) {\n if (Array.isArray(spec)) {\n return spec;\n }\n if (scale.ticks) {\n if (spec === undefined) {\n return scale.ticks();\n }\n if (isNumber(spec)) {\n return scale.ticks(spec);\n }\n if (typeof spec === 'string') {\n var matches = spec.match(timeIntervalRegexp);\n if (matches) {\n var timeType = timeByType[matches[2]][scale.useUTC ? 1 : 0];\n if (matches[1] === undefined) {\n return scale.ticks(timeType);\n }\n return scale.ticks(timeType.every(Number(matches[1])));\n }\n throw new Error(\"Invalid tickValues: \".concat(spec));\n }\n }\n return scale.domain();\n};\nvar computeCartesianTicks = function computeCartesianTicks(_ref) {\n var axis = _ref.axis,\n scale = _ref.scale,\n ticksPosition = _ref.ticksPosition,\n tickValues = _ref.tickValues,\n tickSize = _ref.tickSize,\n tickPadding = _ref.tickPadding,\n tickRotation = _ref.tickRotation,\n _ref$engine = _ref.engine,\n engine = _ref$engine === void 0 ? 'svg' : _ref$engine;\n var values = getScaleTicks(scale, tickValues);\n var textProps = textPropsByEngine[engine];\n var position = scale.bandwidth ? centerScale(scale) : scale;\n var line = {\n lineX: 0,\n lineY: 0\n };\n var text = {\n textX: 0,\n textY: 0\n };\n var translate;\n var textAlign = textProps.align.center;\n var textBaseline = textProps.baseline.center;\n if (axis === 'x') {\n translate = function translate(d) {\n return {\n x: position(d),\n y: 0\n };\n };\n line.lineY = tickSize * (ticksPosition === 'after' ? 1 : -1);\n text.textY = (tickSize + tickPadding) * (ticksPosition === 'after' ? 1 : -1);\n if (ticksPosition === 'after') {\n textBaseline = textProps.baseline.top;\n } else {\n textBaseline = textProps.baseline.bottom;\n }\n if (tickRotation === 0) {\n textAlign = textProps.align.center;\n } else if (ticksPosition === 'after' && tickRotation < 0 || ticksPosition === 'before' && tickRotation > 0) {\n textAlign = textProps.align.right;\n textBaseline = textProps.baseline.center;\n } else if (ticksPosition === 'after' && tickRotation > 0 || ticksPosition === 'before' && tickRotation < 0) {\n textAlign = textProps.align.left;\n textBaseline = textProps.baseline.center;\n }\n } else {\n translate = function translate(d) {\n return {\n x: 0,\n y: position(d)\n };\n };\n line.lineX = tickSize * (ticksPosition === 'after' ? 1 : -1);\n text.textX = (tickSize + tickPadding) * (ticksPosition === 'after' ? 1 : -1);\n if (ticksPosition === 'after') {\n textAlign = textProps.align.left;\n } else {\n textAlign = textProps.align.right;\n }\n }\n var ticks = values.map(function (value) {\n return _objectSpread({\n key: value,\n value: value\n }, translate(value), line, text);\n });\n return {\n ticks: ticks,\n textAlign: textAlign,\n textBaseline: textBaseline\n };\n};\nvar getFormatter = function getFormatter(format$1, scale) {\n if (!format$1 || typeof format$1 === 'function') return format$1;\n if (scale.type === 'time') {\n var f = timeFormat(format$1);\n return function (d) {\n return f(new Date(d));\n };\n }\n return format(format$1);\n};\nvar computeGridLines = function computeGridLines(_ref2) {\n var width = _ref2.width,\n height = _ref2.height,\n scale = _ref2.scale,\n axis = _ref2.axis,\n _values = _ref2.values;\n var lineValues = Array.isArray(_values) ? _values : undefined;\n var lineCount = isNumber(_values) ? _values : undefined;\n var values = lineValues || getScaleTicks(scale, lineCount);\n var position = scale.bandwidth ? centerScale(scale) : scale;\n var lines;\n if (axis === 'x') {\n lines = values.map(function (v) {\n return {\n key: \"\".concat(v),\n x1: position(v),\n x2: position(v),\n y1: 0,\n y2: height\n };\n });\n } else if (axis === 'y') {\n lines = values.map(function (v) {\n return {\n key: \"\".concat(v),\n x1: 0,\n x2: width,\n y1: position(v),\n y2: position(v)\n };\n });\n }\n return lines;\n};\n\nvar axisPropTypes = {\n ticksPosition: PropTypes.oneOf(['before', 'after']),\n tickValues: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)])), PropTypes.string]),\n tickSize: PropTypes.number,\n tickPadding: PropTypes.number,\n tickRotation: PropTypes.number,\n format: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n renderTick: PropTypes.func,\n legend: PropTypes.node,\n legendPosition: PropTypes.oneOf(['start', 'middle', 'end']),\n legendOffset: PropTypes.number\n};\nvar axisPropType = PropTypes.shape(axisPropTypes);\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\nvar AxisTick = function AxisTick(_ref) {\n var _value = _ref.value,\n x = _ref.x,\n y = _ref.y,\n opacity = _ref.opacity,\n rotate = _ref.rotate,\n format = _ref.format,\n lineX = _ref.lineX,\n lineY = _ref.lineY,\n _onClick = _ref.onClick,\n textX = _ref.textX,\n textY = _ref.textY,\n textBaseline = _ref.textBaseline,\n textAnchor = _ref.textAnchor;\n var theme = useTheme();\n var value = _value;\n if (format !== undefined) {\n value = format(value);\n }\n var gStyle = {\n opacity: opacity\n };\n if (_onClick) {\n gStyle['cursor'] = 'pointer';\n }\n return React.createElement(\"g\", _extends({\n transform: \"translate(\".concat(x, \",\").concat(y, \")\")\n }, _onClick ? {\n onClick: function onClick(e) {\n return _onClick(e, value);\n }\n } : {}, {\n style: gStyle\n }), React.createElement(\"line\", {\n x1: 0,\n x2: lineX,\n y1: 0,\n y2: lineY,\n style: theme.axis.ticks.line\n }), React.createElement(\"text\", {\n dominantBaseline: textBaseline,\n textAnchor: textAnchor,\n transform: \"translate(\".concat(textX, \",\").concat(textY, \") rotate(\").concat(rotate, \")\"),\n style: theme.axis.ticks.text\n }, value));\n};\nAxisTick.propTypes = {\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]).isRequired,\n format: PropTypes.func,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n lineX: PropTypes.number.isRequired,\n lineY: PropTypes.number.isRequired,\n textX: PropTypes.number.isRequired,\n textY: PropTypes.number.isRequired,\n textBaseline: PropTypes.string.isRequired,\n textAnchor: PropTypes.string.isRequired,\n opacity: PropTypes.number.isRequired,\n rotate: PropTypes.number.isRequired,\n onClick: PropTypes.func\n};\nAxisTick.defaultProps = {\n opacity: 1,\n rotate: 0\n};\nvar AxisTick$1 = memo(AxisTick);\n\nfunction _extends$1() { _extends$1 = 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; }; return _extends$1.apply(this, arguments); }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; }\nfunction _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar willEnter = function willEnter() {\n return {\n rotate: 0,\n opacity: 0,\n x: 0,\n y: 0\n };\n};\nvar willLeave = function willLeave(springConfig) {\n return function (_ref) {\n var _ref$style = _ref.style,\n x = _ref$style.x,\n y = _ref$style.y,\n rotate = _ref$style.rotate;\n return {\n rotate: rotate,\n opacity: spring(0, springConfig),\n x: spring(x.val, springConfig),\n y: spring(y.val, springConfig)\n };\n };\n};\nvar defaultTickRenderer = function defaultTickRenderer(props) {\n return React.createElement(AxisTick$1, props);\n};\nvar Axis = function Axis(_ref2) {\n var axis = _ref2.axis,\n scale = _ref2.scale,\n x = _ref2.x,\n y = _ref2.y,\n length = _ref2.length,\n ticksPosition = _ref2.ticksPosition,\n tickValues = _ref2.tickValues,\n tickSize = _ref2.tickSize,\n tickPadding = _ref2.tickPadding,\n tickRotation = _ref2.tickRotation,\n format = _ref2.format,\n renderTick = _ref2.renderTick,\n legend = _ref2.legend,\n legendPosition = _ref2.legendPosition,\n legendOffset = _ref2.legendOffset,\n onClick = _ref2.onClick;\n var theme = useTheme();\n var _useMotionConfig = useMotionConfig(),\n animate = _useMotionConfig.animate,\n springConfig = _useMotionConfig.springConfig;\n var formatValue = useMemo(function () {\n return getFormatter(format, scale);\n }, [format, scale]);\n var _computeCartesianTick = computeCartesianTicks({\n axis: axis,\n scale: scale,\n ticksPosition: ticksPosition,\n tickValues: tickValues,\n tickSize: tickSize,\n tickPadding: tickPadding,\n tickRotation: tickRotation\n }),\n ticks = _computeCartesianTick.ticks,\n textAlign = _computeCartesianTick.textAlign,\n textBaseline = _computeCartesianTick.textBaseline;\n var legendNode = null;\n if (legend !== undefined) {\n var legendX = 0;\n var legendY = 0;\n var legendRotation = 0;\n var textAnchor;\n if (axis === 'y') {\n legendRotation = -90;\n legendX = legendOffset;\n if (legendPosition === 'start') {\n textAnchor = 'start';\n legendY = length;\n } else if (legendPosition === 'middle') {\n textAnchor = 'middle';\n legendY = length / 2;\n } else if (legendPosition === 'end') {\n textAnchor = 'end';\n }\n } else {\n legendY = legendOffset;\n if (legendPosition === 'start') {\n textAnchor = 'start';\n } else if (legendPosition === 'middle') {\n textAnchor = 'middle';\n legendX = length / 2;\n } else if (legendPosition === 'end') {\n textAnchor = 'end';\n legendX = length;\n }\n }\n legendNode = React.createElement(\"text\", {\n transform: \"translate(\".concat(legendX, \", \").concat(legendY, \") rotate(\").concat(legendRotation, \")\"),\n textAnchor: textAnchor,\n style: _objectSpread$1({\n dominantBaseline: 'central'\n }, theme.axis.legend.text)\n }, legend);\n }\n if (animate !== true) {\n return React.createElement(\"g\", {\n transform: \"translate(\".concat(x, \",\").concat(y, \")\")\n }, ticks.map(function (tick, tickIndex) {\n return React.createElement(renderTick, _objectSpread$1({\n tickIndex: tickIndex,\n format: formatValue,\n rotate: tickRotation,\n textBaseline: textBaseline,\n textAnchor: textAlign\n }, tick, onClick ? {\n onClick: onClick\n } : {}));\n }), React.createElement(\"line\", {\n style: theme.axis.domain.line,\n x1: 0,\n x2: axis === 'x' ? length : 0,\n y1: 0,\n y2: axis === 'x' ? 0 : length\n }), legendNode);\n }\n return React.createElement(Motion, {\n style: {\n x: spring(x, springConfig),\n y: spring(y, springConfig)\n }\n }, function (xy) {\n return React.createElement(\"g\", {\n transform: \"translate(\".concat(xy.x, \",\").concat(xy.y, \")\")\n }, React.createElement(TransitionMotion, {\n willEnter: willEnter,\n willLeave: willLeave(springConfig),\n styles: ticks.map(function (tick) {\n return {\n key: \"\".concat(tick.key),\n data: tick,\n style: {\n opacity: spring(1, springConfig),\n x: spring(tick.x, springConfig),\n y: spring(tick.y, springConfig),\n rotate: spring(tickRotation, springConfig)\n }\n };\n })\n }, function (interpolatedStyles) {\n return React.createElement(Fragment, null, interpolatedStyles.map(function (_ref3, tickIndex) {\n var style = _ref3.style,\n tick = _ref3.data;\n return React.createElement(renderTick, _objectSpread$1({\n tickIndex: tickIndex,\n format: formatValue,\n textBaseline: textBaseline,\n textAnchor: textAlign\n }, tick, style, onClick ? {\n onClick: onClick\n } : {}));\n }));\n }), React.createElement(Motion, {\n style: {\n x2: spring(axis === 'x' ? length : 0, springConfig),\n y2: spring(axis === 'x' ? 0 : length, springConfig)\n }\n }, function (values) {\n return React.createElement(\"line\", _extends$1({\n style: theme.axis.domain.line,\n x1: 0,\n y1: 0\n }, values));\n }), legendNode);\n });\n};\nAxis.propTypes = {\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n scale: PropTypes.func.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n length: PropTypes.number.isRequired,\n ticksPosition: PropTypes.oneOf(['before', 'after']).isRequired,\n tickValues: axisPropTypes.tickValues,\n tickSize: PropTypes.number.isRequired,\n tickPadding: PropTypes.number.isRequired,\n tickRotation: PropTypes.number.isRequired,\n format: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n renderTick: PropTypes.func.isRequired,\n legend: PropTypes.node,\n legendPosition: PropTypes.oneOf(['start', 'middle', 'end']).isRequired,\n legendOffset: PropTypes.number.isRequired,\n onClick: PropTypes.func\n};\nAxis.defaultProps = {\n x: 0,\n y: 0,\n tickSize: 5,\n tickPadding: 5,\n tickRotation: 0,\n renderTick: defaultTickRenderer,\n legendPosition: 'end',\n legendOffset: 0\n};\nvar Axis$1 = memo(Axis);\n\nfunction _extends$2() { _extends$2 = 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; }; return _extends$2.apply(this, arguments); }\nvar positions = ['top', 'right', 'bottom', 'left'];\nvar Axes = function Axes(_ref) {\n var xScale = _ref.xScale,\n yScale = _ref.yScale,\n width = _ref.width,\n height = _ref.height,\n top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n var axes = {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n return positions.map(function (position) {\n var axis = axes[position];\n if (!axis) return null;\n var isXAxis = position === 'top' || position === 'bottom';\n var ticksPosition = position === 'top' || position === 'left' ? 'before' : 'after';\n return React.createElement(Axis$1, _extends$2({\n key: position\n }, axis, {\n axis: isXAxis ? 'x' : 'y',\n x: position === 'right' ? width : 0,\n y: position === 'bottom' ? height : 0,\n scale: isXAxis ? xScale : yScale,\n length: isXAxis ? width : height,\n ticksPosition: ticksPosition\n }));\n });\n};\nAxes.propTypes = {\n xScale: PropTypes.func,\n yScale: PropTypes.func,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n top: axisPropType,\n right: axisPropType,\n bottom: axisPropType,\n left: axisPropType\n};\nvar Axes$1 = memo(Axes);\n\nvar GridLine = function GridLine(props) {\n return React.createElement(\"line\", props);\n};\nGridLine.propTypes = {\n x1: PropTypes.number.isRequired,\n x2: PropTypes.number.isRequired,\n y1: PropTypes.number.isRequired,\n y2: PropTypes.number.isRequired\n};\nGridLine.defaultProps = {\n x1: 0,\n x2: 0,\n y1: 0,\n y2: 0\n};\nvar GridLine$1 = memo(GridLine);\n\nfunction _extends$3() { _extends$3 = 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; }; return _extends$3.apply(this, arguments); }\nvar GridLines = function GridLines(_ref) {\n var type = _ref.type,\n lines = _ref.lines;\n var theme = useTheme();\n var _useMotionConfig = useMotionConfig(),\n animate = _useMotionConfig.animate,\n springConfig = _useMotionConfig.springConfig;\n var lineWillEnter = useMemo(function () {\n return function (_ref2) {\n var style = _ref2.style;\n return {\n opacity: 0,\n x1: type === 'x' ? 0 : style.x1.val,\n x2: type === 'x' ? 0 : style.x2.val,\n y1: type === 'y' ? 0 : style.y1.val,\n y2: type === 'y' ? 0 : style.y2.val\n };\n };\n }, [type]);\n var lineWillLeave = useMemo(function () {\n return function (_ref3) {\n var style = _ref3.style;\n return {\n opacity: spring(0, springConfig),\n x1: spring(style.x1.val, springConfig),\n x2: spring(style.x2.val, springConfig),\n y1: spring(style.y1.val, springConfig),\n y2: spring(style.y2.val, springConfig)\n };\n };\n }, [springConfig]);\n if (!animate) {\n return React.createElement(\"g\", null, lines.map(function (line) {\n return React.createElement(GridLine$1, _extends$3({\n key: line.key\n }, line, theme.grid.line));\n }));\n }\n return React.createElement(TransitionMotion, {\n willEnter: lineWillEnter,\n willLeave: lineWillLeave,\n styles: lines.map(function (line) {\n return {\n key: line.key,\n style: {\n opacity: spring(1, springConfig),\n x1: spring(line.x1 || 0, springConfig),\n x2: spring(line.x2 || 0, springConfig),\n y1: spring(line.y1 || 0, springConfig),\n y2: spring(line.y2 || 0, springConfig)\n }\n };\n })\n }, function (interpolatedStyles) {\n return React.createElement(\"g\", null, interpolatedStyles.map(function (interpolatedStyle) {\n var key = interpolatedStyle.key,\n style = interpolatedStyle.style;\n return React.createElement(GridLine$1, _extends$3({\n key: key\n }, theme.grid.line, style));\n }));\n });\n};\nGridLines.propTypes = {\n type: PropTypes.oneOf(['x', 'y']).isRequired,\n lines: PropTypes.arrayOf(PropTypes.shape({\n key: PropTypes.string.isRequired,\n x1: PropTypes.number,\n x2: PropTypes.number,\n y1: PropTypes.number,\n y2: PropTypes.number\n })).isRequired\n};\nvar GridLines$1 = memo(GridLines);\n\nvar Grid = function Grid(_ref) {\n var width = _ref.width,\n height = _ref.height,\n xScale = _ref.xScale,\n yScale = _ref.yScale,\n xValues = _ref.xValues,\n yValues = _ref.yValues;\n var xLines = useMemo(function () {\n if (!xScale) return false;\n return computeGridLines({\n width: width,\n height: height,\n scale: xScale,\n axis: 'x',\n values: xValues\n });\n }, [xScale, xValues]);\n var yLines = yScale ? computeGridLines({\n width: width,\n height: height,\n scale: yScale,\n axis: 'y',\n values: yValues\n }) : false;\n return React.createElement(React.Fragment, null, xLines && React.createElement(GridLines$1, {\n type: \"x\",\n lines: xLines\n }), yLines && React.createElement(GridLines$1, {\n type: \"y\",\n lines: yLines\n }));\n};\nGrid.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n xScale: PropTypes.func,\n yScale: PropTypes.func,\n xValues: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]))]),\n yValues: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]))])\n};\nvar Grid$1 = memo(Grid);\n\nvar degreesToRadians = function degreesToRadians(degrees) {\n return degrees * Math.PI / 180;\n};\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$2(target, key, source[key]); }); } return target; }\nfunction _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar renderAxisToCanvas = function renderAxisToCanvas(ctx, _ref) {\n var axis = _ref.axis,\n scale = _ref.scale,\n _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n length = _ref.length,\n ticksPosition = _ref.ticksPosition,\n tickValues = _ref.tickValues,\n _ref$tickSize = _ref.tickSize,\n tickSize = _ref$tickSize === void 0 ? 5 : _ref$tickSize,\n _ref$tickPadding = _ref.tickPadding,\n tickPadding = _ref$tickPadding === void 0 ? 5 : _ref$tickPadding,\n _ref$tickRotation = _ref.tickRotation,\n tickRotation = _ref$tickRotation === void 0 ? 0 : _ref$tickRotation,\n format = _ref.format,\n legend = _ref.legend,\n _ref$legendPosition = _ref.legendPosition,\n legendPosition = _ref$legendPosition === void 0 ? 'end' : _ref$legendPosition,\n _ref$legendOffset = _ref.legendOffset,\n legendOffset = _ref$legendOffset === void 0 ? 0 : _ref$legendOffset,\n theme = _ref.theme;\n var _computeCartesianTick = computeCartesianTicks({\n axis: axis,\n scale: scale,\n ticksPosition: ticksPosition,\n tickValues: tickValues,\n tickSize: tickSize,\n tickPadding: tickPadding,\n tickRotation: tickRotation,\n engine: 'canvas'\n }),\n ticks = _computeCartesianTick.ticks,\n textAlign = _computeCartesianTick.textAlign,\n textBaseline = _computeCartesianTick.textBaseline;\n ctx.save();\n ctx.translate(x, y);\n ctx.textAlign = textAlign;\n ctx.textBaseline = textBaseline;\n ctx.font = \"\".concat(theme.axis.ticks.text.fontSize, \"px \").concat(theme.axis.ticks.text.fontFamily);\n if (theme.axis.domain.line.strokeWidth > 0) {\n ctx.lineWidth = theme.axis.domain.line.strokeWidth;\n ctx.lineCap = 'square';\n ctx.strokeStyle = theme.axis.domain.line.stroke;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(axis === 'x' ? length : 0, axis === 'x' ? 0 : length);\n ctx.stroke();\n }\n ticks.forEach(function (tick) {\n if (theme.axis.ticks.line.strokeWidth > 0) {\n ctx.lineWidth = theme.axis.ticks.line.strokeWidth;\n ctx.lineCap = 'square';\n ctx.strokeStyle = theme.axis.ticks.line.stroke;\n ctx.beginPath();\n ctx.moveTo(tick.x, tick.y);\n ctx.lineTo(tick.x + tick.lineX, tick.y + tick.lineY);\n ctx.stroke();\n }\n var value = format !== undefined ? format(tick.value) : tick.value;\n ctx.save();\n ctx.translate(tick.x + tick.textX, tick.y + tick.textY);\n ctx.rotate(degreesToRadians(tickRotation));\n ctx.fillStyle = theme.axis.ticks.text.fill;\n ctx.fillText(value, 0, 0);\n ctx.restore();\n });\n if (legend !== undefined) {\n var legendX = 0;\n var legendY = 0;\n var legendRotation = 0;\n var _textAlign;\n if (axis === 'y') {\n legendRotation = -90;\n legendX = legendOffset;\n if (legendPosition === 'start') {\n _textAlign = 'start';\n legendY = length;\n } else if (legendPosition === 'middle') {\n _textAlign = 'center';\n legendY = length / 2;\n } else if (legendPosition === 'end') {\n _textAlign = 'end';\n }\n } else {\n legendY = legendOffset;\n if (legendPosition === 'start') {\n _textAlign = 'start';\n } else if (legendPosition === 'middle') {\n _textAlign = 'center';\n legendX = length / 2;\n } else if (legendPosition === 'end') {\n _textAlign = 'end';\n legendX = length;\n }\n }\n ctx.translate(legendX, legendY);\n ctx.rotate(degreesToRadians(legendRotation));\n ctx.font = \"\".concat(theme.axis.legend.text.fontWeight ? \"\".concat(theme.axis.legend.text.fontWeight, \" \") : '').concat(theme.axis.legend.text.fontSize, \"px \").concat(theme.axis.legend.text.fontFamily);\n ctx.fillStyle = theme.axis.legend.text.fill;\n ctx.textAlign = _textAlign;\n ctx.textBaseline = 'middle';\n ctx.fillText(legend, 0, 0);\n }\n ctx.restore();\n};\nvar positions$1 = ['top', 'right', 'bottom', 'left'];\nvar renderAxesToCanvas = function renderAxesToCanvas(ctx, _ref2) {\n var xScale = _ref2.xScale,\n yScale = _ref2.yScale,\n width = _ref2.width,\n height = _ref2.height,\n top = _ref2.top,\n right = _ref2.right,\n bottom = _ref2.bottom,\n left = _ref2.left,\n theme = _ref2.theme;\n var axes = {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n positions$1.forEach(function (position) {\n var axis = axes[position];\n if (!axis) return null;\n var isXAxis = position === 'top' || position === 'bottom';\n var ticksPosition = position === 'top' || position === 'left' ? 'before' : 'after';\n var scale = isXAxis ? xScale : yScale;\n var format = getFormatter(axis.format, scale);\n renderAxisToCanvas(ctx, _objectSpread$2({}, axis, {\n axis: isXAxis ? 'x' : 'y',\n x: position === 'right' ? width : 0,\n y: position === 'bottom' ? height : 0,\n scale: scale,\n format: format,\n length: isXAxis ? width : height,\n ticksPosition: ticksPosition,\n theme: theme\n }));\n });\n};\nvar renderGridLinesToCanvas = function renderGridLinesToCanvas(ctx, _ref3) {\n var width = _ref3.width,\n height = _ref3.height,\n scale = _ref3.scale,\n axis = _ref3.axis,\n values = _ref3.values;\n var lines = computeGridLines({\n width: width,\n height: height,\n scale: scale,\n axis: axis,\n values: values\n });\n lines.forEach(function (line) {\n ctx.beginPath();\n ctx.moveTo(line.x1, line.y1);\n ctx.lineTo(line.x2, line.y2);\n ctx.stroke();\n });\n};\n\nexport { Axes$1 as Axes, Axis$1 as Axis, Grid$1 as Grid, axisPropType, axisPropTypes, renderAxesToCanvas, renderAxisToCanvas, renderGridLinesToCanvas };\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","import unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nexport default function _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = require(\"react\");\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _pick = _interopRequireDefault(require(\"./utils/pick\"));\n\nvar _shallowEqual = _interopRequireDefault(require(\"./shallowEqual\"));\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar withPropsOnChange = function withPropsOnChange(shouldMapOrKeys, propsMapper) {\n return function (BaseComponent) {\n var factory = (0, _react.createFactory)(BaseComponent);\n var shouldMap = typeof shouldMapOrKeys === 'function' ? shouldMapOrKeys : function (props, nextProps) {\n return !(0, _shallowEqual.default)((0, _pick.default)(props, shouldMapOrKeys), (0, _pick.default)(nextProps, shouldMapOrKeys));\n };\n\n var WithPropsOnChange =\n /*#__PURE__*/\n function (_Component) {\n (0, _inheritsLoose2.default)(WithPropsOnChange, _Component);\n\n function WithPropsOnChange() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n computedProps: propsMapper(_this.props),\n prevProps: _this.props\n };\n return _this;\n }\n\n WithPropsOnChange.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n if (shouldMap(prevState.prevProps, nextProps)) {\n return {\n computedProps: propsMapper(nextProps),\n prevProps: nextProps\n };\n }\n\n return {\n prevProps: nextProps\n };\n };\n\n var _proto = WithPropsOnChange.prototype;\n\n _proto.render = function render() {\n return factory((0, _extends2.default)({}, this.props, this.state.computedProps));\n };\n\n return WithPropsOnChange;\n }(_react.Component);\n\n (0, _reactLifecyclesCompat.polyfill)(WithPropsOnChange);\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'withPropsOnChange'))(WithPropsOnChange);\n }\n\n return WithPropsOnChange;\n };\n};\n\nvar _default = withPropsOnChange;\nexports.default = _default;","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\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 * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\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","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar compose = function compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n }, function (arg) {\n return arg;\n });\n};\n\nvar _default = compose;\nexports.default = _default;","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","// @flow\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\n\nconst hasNativePerformanceNow =\n typeof performance === 'object' && typeof performance.now === 'function';\n\nconst now = hasNativePerformanceNow\n ? () => performance.now()\n : () => Date.now();\n\nexport type TimeoutID = {|\n id: AnimationFrameID,\n|};\n\nexport function cancelTimeout(timeoutID: TimeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\n\nexport function requestTimeout(callback: Function, delay: number): TimeoutID {\n const start = now();\n\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n\n const timeoutID: TimeoutID = {\n id: requestAnimationFrame(tick),\n };\n\n return timeoutID;\n}\n","// @flow\n\nlet size: number = -1;\n\n// This utility copied from \"dom-helpers\" package.\nexport function getScrollbarSize(recalculate?: boolean = false): number {\n if (size === -1 || recalculate) {\n const div = document.createElement('div');\n const style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n\n ((document.body: any): HTMLBodyElement).appendChild(div);\n\n size = div.offsetWidth - div.clientWidth;\n\n ((document.body: any): HTMLBodyElement).removeChild(div);\n }\n\n return size;\n}\n\nexport type RTLOffsetType =\n | 'negative'\n | 'positive-descending'\n | 'positive-ascending';\n\nlet cachedRTLResult: RTLOffsetType | null = null;\n\n// TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\nexport function getRTLOffsetType(recalculate?: boolean = false): RTLOffsetType {\n if (cachedRTLResult === null || recalculate) {\n const outerDiv = document.createElement('div');\n const outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n\n const innerDiv = document.createElement('div');\n const innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n\n outerDiv.appendChild(innerDiv);\n\n ((document.body: any): HTMLBodyElement).appendChild(outerDiv);\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n\n ((document.body: any): HTMLBodyElement).removeChild(outerDiv);\n\n return cachedRTLResult;\n }\n\n return cachedRTLResult;\n}\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getScrollbarSize, getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\ntype Direction = 'ltr' | 'rtl';\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n\ntype RenderComponentProps = {|\n columnIndex: number,\n data: T,\n isScrolling?: boolean,\n rowIndex: number,\n style: Object,\n|};\nexport type RenderComponent = React$ComponentType<\n $Shape>\n>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype OnItemsRenderedCallback = ({\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number,\n}) => void;\ntype OnScrollCallback = ({\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent;\ntype ItemStyleCache = { [key: string]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props = {|\n children: RenderComponent,\n className?: string,\n columnCount: number,\n columnWidth: itemSize,\n direction: Direction,\n height: number,\n initialScrollLeft?: number,\n initialScrollTop?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent,\n innerTagName?: string, // deprecated\n itemData: T,\n itemKey?: (params: {|\n columnIndex: number,\n data: T,\n rowIndex: number,\n |}) => any,\n onItemsRendered?: OnItemsRenderedCallback,\n onScroll?: OnScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent,\n outerTagName?: string, // deprecated\n overscanColumnCount?: number,\n overscanColumnsCount?: number, // deprecated\n overscanCount?: number, // deprecated\n overscanRowCount?: number,\n overscanRowsCount?: number, // deprecated\n rowCount: number,\n rowHeight: itemSize,\n style?: Object,\n useIsScrolling: boolean,\n width: number,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n horizontalScrollDirection: ScrollDirection,\n scrollLeft: number,\n scrollTop: number,\n scrollUpdateWasRequested: boolean,\n verticalScrollDirection: ScrollDirection,\n|};\n\ntype getItemOffset = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype getItemSize = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype getEstimatedTotalSize = (props: Props, instanceProps: any) => number;\ntype GetOffsetForItemAndAlignment = (\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any,\n scrollbarSize: number\n) => number;\ntype GetStartIndexForOffset = (\n props: Props,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props, instance: any) => any;\ntype ValidateProps = (props: Props) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = ({ columnIndex, data, rowIndex }) =>\n `${rowIndex}:${columnIndex}`;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsOverscanCount = null;\nlet devWarningsOverscanRowsColumnsCount = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount = new WeakSet();\n devWarningsOverscanRowsColumnsCount = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createGridComponent({\n getColumnOffset,\n getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex,\n getColumnWidth,\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment,\n getRowHeight,\n getRowOffset,\n getRowStartIndexForOffset,\n getRowStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getColumnOffset: getItemOffset,\n getColumnStartIndexForOffset: GetStartIndexForOffset,\n getColumnStopIndexForStartIndex: GetStopIndexForStartIndex,\n getColumnWidth: getItemSize,\n getEstimatedTotalHeight: getEstimatedTotalSize,\n getEstimatedTotalWidth: getEstimatedTotalSize,\n getOffsetForColumnAndAlignment: GetOffsetForItemAndAlignment,\n getOffsetForRowAndAlignment: GetOffsetForItemAndAlignment,\n getRowOffset: getItemOffset,\n getRowHeight: getItemSize,\n getRowStartIndexForOffset: GetStartIndexForOffset,\n getRowStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class Grid extends PureComponent, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n _outerRef: ?HTMLDivElement;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft:\n typeof this.props.initialScrollLeft === 'number'\n ? this.props.initialScrollLeft\n : 0,\n scrollTop:\n typeof this.props.initialScrollTop === 'number'\n ? this.props.initialScrollTop\n : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward',\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props,\n prevState: State\n ): $Shape | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo({\n scrollLeft,\n scrollTop,\n }: {\n scrollLeft: number,\n scrollTop: number,\n }): void {\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n\n this.setState(prevState => {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n return null;\n }\n\n return {\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem({\n align = 'auto',\n columnIndex,\n rowIndex,\n }: {\n align: ScrollToAlign,\n columnIndex?: number,\n rowIndex?: number,\n }): void {\n const { columnCount, height, rowCount, width } = this.props;\n const { scrollLeft, scrollTop } = this.state;\n const scrollbarSize = getScrollbarSize();\n\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n const horizontalScrollbarSize =\n estimatedTotalWidth > width ? scrollbarSize : 0;\n const verticalScrollbarSize =\n estimatedTotalHeight > height ? scrollbarSize : 0;\n\n this.scrollTo({\n scrollLeft:\n columnIndex !== undefined\n ? getOffsetForColumnAndAlignment(\n this.props,\n columnIndex,\n align,\n scrollLeft,\n this._instanceProps,\n verticalScrollbarSize\n )\n : scrollLeft,\n scrollTop:\n rowIndex !== undefined\n ? getOffsetForRowAndAlignment(\n this.props,\n rowIndex,\n align,\n scrollTop,\n this._instanceProps,\n horizontalScrollbarSize\n )\n : scrollTop,\n });\n }\n\n componentDidMount() {\n const { initialScrollLeft, initialScrollTop } = this.props;\n\n if (this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction } = this.props;\n const { scrollLeft, scrollTop, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n const outerRef = ((this._outerRef: any): HTMLElement);\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n columnCount,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemData,\n itemKey = defaultItemKey,\n outerElementType,\n outerTagName,\n rowCount,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n const [\n columnStartIndex,\n columnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [rowStartIndex, rowStopIndex] = this._getVerticalRangeToRender();\n\n const items = [];\n if (columnCount > 0 && rowCount) {\n for (\n let rowIndex = rowStartIndex;\n rowIndex <= rowStopIndex;\n rowIndex++\n ) {\n for (\n let columnIndex = columnStartIndex;\n columnIndex <= columnStopIndex;\n columnIndex++\n ) {\n items.push(\n createElement(children, {\n columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({ columnIndex, data: itemData, rowIndex }),\n rowIndex,\n style: this._getItemStyle(rowIndex, columnIndex),\n })\n );\n }\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalHeight = getEstimatedTotalHeight(\n this.props,\n this._instanceProps\n );\n const estimatedTotalWidth = getEstimatedTotalWidth(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth,\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanColumnStartIndex: number,\n overscanColumnStopIndex: number,\n overscanRowStartIndex: number,\n overscanRowStopIndex: number,\n visibleColumnStartIndex: number,\n visibleColumnStopIndex: number,\n visibleRowStartIndex: number,\n visibleRowStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): OnItemsRenderedCallback)({\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollLeft: number,\n scrollTop: number,\n horizontalScrollDirection: ScrollDirection,\n verticalScrollDirection: ScrollDirection,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): OnScrollCallback)({\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n verticalScrollDirection,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n const { columnCount, onItemsRendered, onScroll, rowCount } = this.props;\n\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n const [\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n ] = this._getHorizontalRangeToRender();\n const [\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n ] = this._getVerticalRangeToRender();\n this._callOnItemsRendered(\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex\n );\n }\n }\n\n if (typeof onScroll === 'function') {\n const {\n horizontalScrollDirection,\n scrollLeft,\n scrollTop,\n scrollUpdateWasRequested,\n verticalScrollDirection,\n } = this.state;\n this._callOnScroll(\n scrollLeft,\n scrollTop,\n horizontalScrollDirection,\n verticalScrollDirection,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (rowIndex: number, columnIndex: number) => Object;\n _getItemStyle = (rowIndex: number, columnIndex: number): Object => {\n const { columnWidth, direction, rowHeight } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && columnWidth,\n shouldResetStyleCacheOnItemSizeChange && direction,\n shouldResetStyleCacheOnItemSizeChange && rowHeight\n );\n\n const key = `${rowIndex}:${columnIndex}`;\n\n let style;\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n const offset = getColumnOffset(\n this.props,\n columnIndex,\n this._instanceProps\n );\n const isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offset,\n right: isRtl ? offset : undefined,\n top: getRowOffset(this.props, rowIndex, this._instanceProps),\n height: getRowHeight(this.props, rowIndex, this._instanceProps),\n width: getColumnWidth(this.props, columnIndex, this._instanceProps),\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getHorizontalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanColumnCount,\n overscanColumnsCount,\n overscanCount,\n rowCount,\n } = this.props;\n const { horizontalScrollDirection, isScrolling, scrollLeft } = this.state;\n\n const overscanCountResolved: number =\n overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getColumnStartIndexForOffset(\n this.props,\n scrollLeft,\n this._instanceProps\n );\n const stopIndex = getColumnStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollLeft,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || horizontalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || horizontalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _getVerticalRangeToRender(): [number, number, number, number] {\n const {\n columnCount,\n overscanCount,\n overscanRowCount,\n overscanRowsCount,\n rowCount,\n } = this.props;\n const { isScrolling, verticalScrollDirection, scrollTop } = this.state;\n\n const overscanCountResolved: number =\n overscanRowCount || overscanRowsCount || overscanCount || 1;\n\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getRowStartIndexForOffset(\n this.props,\n scrollTop,\n this._instanceProps\n );\n const stopIndex = getRowStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollTop,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || verticalScrollDirection === 'backward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n const overscanForward =\n !isScrolling || verticalScrollDirection === 'forward'\n ? Math.max(1, overscanCountResolved)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScroll = (event: ScrollEvent): void => {\n const {\n clientHeight,\n clientWidth,\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth,\n } = event.currentTarget;\n this.setState(prevState => {\n if (\n prevState.scrollLeft === scrollLeft &&\n prevState.scrollTop === scrollTop\n ) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n let calculatedScrollLeft = scrollLeft;\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n calculatedScrollLeft = Math.max(\n 0,\n Math.min(calculatedScrollLeft, scrollWidth - clientWidth)\n );\n const calculatedScrollTop = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n horizontalScrollDirection:\n prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection:\n prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1);\n });\n };\n };\n}\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n innerTagName,\n outerTagName,\n overscanColumnsCount,\n overscanCount,\n overscanRowsCount,\n width,\n }: Props,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn(\n 'The overscanCount prop has been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (\n typeof overscanColumnsCount === 'number' ||\n typeof overscanRowsCount === 'number'\n ) {\n if (\n devWarningsOverscanRowsColumnsCount &&\n !devWarningsOverscanRowsColumnsCount.has(instance)\n ) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn(\n 'The overscanColumnsCount and overscanRowsCount props have been deprecated. ' +\n 'Please use the overscanColumnCount and overscanRowCount props instead.'\n );\n }\n }\n\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n if (typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Grids must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n }\n\n if (typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Grids must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport createGridComponent from './createGridComponent';\n\nimport type { Props, ScrollToAlign } from './createGridComponent';\n\nconst DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n\ntype VariableSizeProps = {|\n estimatedColumnWidth: number,\n estimatedRowHeight: number,\n ...Props,\n|};\n\ntype itemSizeGetter = (index: number) => number;\ntype ItemType = 'column' | 'row';\n\ntype ItemMetadata = {|\n offset: number,\n size: number,\n|};\ntype ItemMetadataMap = { [index: number]: ItemMetadata };\ntype InstanceProps = {|\n columnMetadataMap: ItemMetadataMap,\n estimatedColumnWidth: number,\n estimatedRowHeight: number,\n lastMeasuredColumnIndex: number,\n lastMeasuredRowIndex: number,\n rowMetadataMap: ItemMetadataMap,\n|};\n\nconst getEstimatedTotalHeight = (\n { rowCount }: Props,\n { rowMetadataMap, estimatedRowHeight, lastMeasuredRowIndex }: InstanceProps\n) => {\n let totalSizeOfMeasuredRows = 0;\n\n // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n if (lastMeasuredRowIndex >= rowCount) {\n lastMeasuredRowIndex = rowCount - 1;\n }\n\n if (lastMeasuredRowIndex >= 0) {\n const itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n const numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nconst getEstimatedTotalWidth = (\n { columnCount }: Props,\n {\n columnMetadataMap,\n estimatedColumnWidth,\n lastMeasuredColumnIndex,\n }: InstanceProps\n) => {\n let totalSizeOfMeasuredRows = 0;\n\n // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n if (lastMeasuredColumnIndex >= columnCount) {\n lastMeasuredColumnIndex = columnCount - 1;\n }\n\n if (lastMeasuredColumnIndex >= 0) {\n const itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n\n const numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\n\nconst getItemMetadata = (\n itemType: ItemType,\n props: Props,\n index: number,\n instanceProps: InstanceProps\n): ItemMetadata => {\n let itemMetadataMap, itemSize, lastMeasuredIndex;\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n itemSize = ((props.columnWidth: any): itemSizeGetter);\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n itemSize = ((props.rowHeight: any): itemSizeGetter);\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n if (index > lastMeasuredIndex) {\n let offset = 0;\n if (lastMeasuredIndex >= 0) {\n const itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n\n for (let i = lastMeasuredIndex + 1; i <= index; i++) {\n let size = itemSize(i);\n\n itemMetadataMap[i] = {\n offset,\n size,\n };\n\n offset += size;\n }\n\n if (itemType === 'column') {\n instanceProps.lastMeasuredColumnIndex = index;\n } else {\n instanceProps.lastMeasuredRowIndex = index;\n }\n }\n\n return itemMetadataMap[index];\n};\n\nconst findNearestItem = (\n itemType: ItemType,\n props: Props,\n instanceProps: InstanceProps,\n offset: number\n) => {\n let itemMetadataMap, lastMeasuredIndex;\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n\n const lastMeasuredItemOffset =\n lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch(\n itemType,\n props,\n instanceProps,\n lastMeasuredIndex,\n 0,\n offset\n );\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch(\n itemType,\n props,\n instanceProps,\n Math.max(0, lastMeasuredIndex),\n offset\n );\n }\n};\n\nconst findNearestItemBinarySearch = (\n itemType: ItemType,\n props: Props,\n instanceProps: InstanceProps,\n high: number,\n low: number,\n offset: number\n): number => {\n while (low <= high) {\n const middle = low + Math.floor((high - low) / 2);\n const currentOffset = getItemMetadata(\n itemType,\n props,\n middle,\n instanceProps\n ).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\n\nconst findNearestItemExponentialSearch = (\n itemType: ItemType,\n props: Props,\n instanceProps: InstanceProps,\n index: number,\n offset: number\n): number => {\n const itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n let interval = 1;\n\n while (\n index < itemCount &&\n getItemMetadata(itemType, props, index, instanceProps).offset < offset\n ) {\n index += interval;\n interval *= 2;\n }\n\n return findNearestItemBinarySearch(\n itemType,\n props,\n instanceProps,\n Math.min(index, itemCount - 1),\n Math.floor(index / 2),\n offset\n );\n};\n\nconst getOffsetForIndexAndAlignment = (\n itemType: ItemType,\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: InstanceProps,\n scrollbarSize: number\n): number => {\n const size = itemType === 'column' ? props.width : props.height;\n const itemMetadata = getItemMetadata(itemType, props, index, instanceProps);\n\n // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n const estimatedTotalSize =\n itemType === 'column'\n ? getEstimatedTotalWidth(props, instanceProps)\n : getEstimatedTotalHeight(props, instanceProps);\n\n const maxOffset = Math.max(\n 0,\n Math.min(estimatedTotalSize - size, itemMetadata.offset)\n );\n const minOffset = Math.max(\n 0,\n itemMetadata.offset - size + scrollbarSize + itemMetadata.size\n );\n\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n};\n\nconst VariableSizeGrid = createGridComponent({\n getColumnOffset: (\n props: Props,\n index: number,\n instanceProps: InstanceProps\n ): number => getItemMetadata('column', props, index, instanceProps).offset,\n\n getColumnStartIndexForOffset: (\n props: Props,\n scrollLeft: number,\n instanceProps: InstanceProps\n ): number => findNearestItem('column', props, instanceProps, scrollLeft),\n\n getColumnStopIndexForStartIndex: (\n props: Props,\n startIndex: number,\n scrollLeft: number,\n instanceProps: InstanceProps\n ): number => {\n const { columnCount, width } = props;\n\n const itemMetadata = getItemMetadata(\n 'column',\n props,\n startIndex,\n instanceProps\n );\n const maxOffset = scrollLeft + width;\n\n let offset = itemMetadata.offset + itemMetadata.size;\n let stopIndex = startIndex;\n\n while (stopIndex < columnCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n\n getColumnWidth: (\n props: Props,\n index: number,\n instanceProps: InstanceProps\n ): number => instanceProps.columnMetadataMap[index].size,\n\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n\n getOffsetForColumnAndAlignment: (\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: InstanceProps,\n scrollbarSize: number\n ): number =>\n getOffsetForIndexAndAlignment(\n 'column',\n props,\n index,\n align,\n scrollOffset,\n instanceProps,\n scrollbarSize\n ),\n\n getOffsetForRowAndAlignment: (\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: InstanceProps,\n scrollbarSize: number\n ): number =>\n getOffsetForIndexAndAlignment(\n 'row',\n props,\n index,\n align,\n scrollOffset,\n instanceProps,\n scrollbarSize\n ),\n\n getRowOffset: (\n props: Props,\n index: number,\n instanceProps: InstanceProps\n ): number => getItemMetadata('row', props, index, instanceProps).offset,\n\n getRowHeight: (\n props: Props,\n index: number,\n instanceProps: InstanceProps\n ): number => instanceProps.rowMetadataMap[index].size,\n\n getRowStartIndexForOffset: (\n props: Props,\n scrollTop: number,\n instanceProps: InstanceProps\n ): number => findNearestItem('row', props, instanceProps, scrollTop),\n\n getRowStopIndexForStartIndex: (\n props: Props,\n startIndex: number,\n scrollTop: number,\n instanceProps: InstanceProps\n ): number => {\n const { rowCount, height } = props;\n\n const itemMetadata = getItemMetadata(\n 'row',\n props,\n startIndex,\n instanceProps\n );\n const maxOffset = scrollTop + height;\n\n let offset = itemMetadata.offset + itemMetadata.size;\n let stopIndex = startIndex;\n\n while (stopIndex < rowCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n }\n\n return stopIndex;\n },\n\n initInstanceProps(props: Props, instance: any): InstanceProps {\n const {\n estimatedColumnWidth,\n estimatedRowHeight,\n } = ((props: any): VariableSizeProps);\n\n const instanceProps = {\n columnMetadataMap: {},\n estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n lastMeasuredColumnIndex: -1,\n lastMeasuredRowIndex: -1,\n rowMetadataMap: {},\n };\n\n instance.resetAfterColumnIndex = (\n columnIndex: number,\n shouldForceUpdate?: boolean = true\n ) => {\n instance.resetAfterIndices({ columnIndex, shouldForceUpdate });\n };\n\n instance.resetAfterRowIndex = (\n rowIndex: number,\n shouldForceUpdate?: boolean = true\n ) => {\n instance.resetAfterIndices({ rowIndex, shouldForceUpdate });\n };\n\n instance.resetAfterIndices = ({\n columnIndex,\n rowIndex,\n shouldForceUpdate = true,\n }: {\n columnIndex?: number,\n rowIndex?: number,\n shouldForceUpdate: boolean,\n }) => {\n if (typeof columnIndex === 'number') {\n instanceProps.lastMeasuredColumnIndex = Math.min(\n instanceProps.lastMeasuredColumnIndex,\n columnIndex - 1\n );\n }\n if (typeof rowIndex === 'number') {\n instanceProps.lastMeasuredRowIndex = Math.min(\n instanceProps.lastMeasuredRowIndex,\n rowIndex - 1\n );\n }\n\n // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n instance._getItemStyleCache(-1);\n\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n\n return instanceProps;\n },\n\n shouldResetStyleCacheOnItemSizeChange: false,\n\n validateProps: ({ columnWidth, rowHeight }: Props): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'function') {\n throw Error(\n 'An invalid \"columnWidth\" prop has been specified. ' +\n 'Value should be a function. ' +\n `\"${\n columnWidth === null ? 'null' : typeof columnWidth\n }\" was specified.`\n );\n } else if (typeof rowHeight !== 'function') {\n throw Error(\n 'An invalid \"rowHeight\" prop has been specified. ' +\n 'Value should be a function. ' +\n `\"${rowHeight === null ? 'null' : typeof rowHeight}\" was specified.`\n );\n }\n }\n },\n});\n\nexport default VariableSizeGrid;\n","// @flow\n\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport { cancelTimeout, requestTimeout } from './timer';\nimport { getRTLOffsetType } from './domHelpers';\n\nimport type { TimeoutID } from './timer';\n\nexport type ScrollToAlign = 'auto' | 'smart' | 'center' | 'start' | 'end';\n\ntype itemSize = number | ((index: number) => number);\n// TODO Deprecate directions \"horizontal\" and \"vertical\"\ntype Direction = 'ltr' | 'rtl' | 'horizontal' | 'vertical';\ntype Layout = 'horizontal' | 'vertical';\n\ntype RenderComponentProps = {|\n data: T,\n index: number,\n isScrolling?: boolean,\n style: Object,\n|};\ntype RenderComponent = React$ComponentType<$Shape>>;\n\ntype ScrollDirection = 'forward' | 'backward';\n\ntype onItemsRenderedCallback = ({\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number,\n}) => void;\ntype onScrollCallback = ({\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n}) => void;\n\ntype ScrollEvent = SyntheticEvent;\ntype ItemStyleCache = { [index: number]: Object };\n\ntype OuterProps = {|\n children: React$Node,\n className: string | void,\n onScroll: ScrollEvent => void,\n style: {\n [string]: mixed,\n },\n|};\n\ntype InnerProps = {|\n children: React$Node,\n style: {\n [string]: mixed,\n },\n|};\n\nexport type Props = {|\n children: RenderComponent,\n className?: string,\n direction: Direction,\n height: number | string,\n initialScrollOffset?: number,\n innerRef?: any,\n innerElementType?: string | React$AbstractComponent,\n innerTagName?: string, // deprecated\n itemCount: number,\n itemData: T,\n itemKey?: (index: number, data: T) => any,\n itemSize: itemSize,\n layout: Layout,\n onItemsRendered?: onItemsRenderedCallback,\n onScroll?: onScrollCallback,\n outerRef?: any,\n outerElementType?: string | React$AbstractComponent,\n outerTagName?: string, // deprecated\n overscanCount: number,\n style?: Object,\n useIsScrolling: boolean,\n width: number | string,\n|};\n\ntype State = {|\n instance: any,\n isScrolling: boolean,\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean,\n|};\n\ntype GetItemOffset = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype GetItemSize = (\n props: Props,\n index: number,\n instanceProps: any\n) => number;\ntype GetEstimatedTotalSize = (props: Props, instanceProps: any) => number;\ntype GetOffsetForIndexAndAlignment = (\n props: Props,\n index: number,\n align: ScrollToAlign,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype GetStartIndexForOffset = (\n props: Props,\n offset: number,\n instanceProps: any\n) => number;\ntype GetStopIndexForStartIndex = (\n props: Props,\n startIndex: number,\n scrollOffset: number,\n instanceProps: any\n) => number;\ntype InitInstanceProps = (props: Props, instance: any) => any;\ntype ValidateProps = (props: Props) => void;\n\nconst IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\n\nconst defaultItemKey = (index: number, data: any) => index;\n\n// In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\nlet devWarningsDirection = null;\nlet devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = new WeakSet();\n devWarningsTagName = new WeakSet();\n }\n}\n\nexport default function createListComponent({\n getItemOffset,\n getEstimatedTotalSize,\n getItemSize,\n getOffsetForIndexAndAlignment,\n getStartIndexForOffset,\n getStopIndexForStartIndex,\n initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange,\n validateProps,\n}: {|\n getItemOffset: GetItemOffset,\n getEstimatedTotalSize: GetEstimatedTotalSize,\n getItemSize: GetItemSize,\n getOffsetForIndexAndAlignment: GetOffsetForIndexAndAlignment,\n getStartIndexForOffset: GetStartIndexForOffset,\n getStopIndexForStartIndex: GetStopIndexForStartIndex,\n initInstanceProps: InitInstanceProps,\n shouldResetStyleCacheOnItemSizeChange: boolean,\n validateProps: ValidateProps,\n|}) {\n return class List extends PureComponent, State> {\n _instanceProps: any = initInstanceProps(this.props, this);\n _outerRef: ?HTMLDivElement;\n _resetIsScrollingTimeoutId: TimeoutID | null = null;\n\n static defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false,\n };\n\n state: State = {\n instance: this,\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset:\n typeof this.props.initialScrollOffset === 'number'\n ? this.props.initialScrollOffset\n : 0,\n scrollUpdateWasRequested: false,\n };\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n constructor(props: Props) {\n super(props);\n }\n\n static getDerivedStateFromProps(\n nextProps: Props,\n prevState: State\n ): $Shape | null {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n }\n\n scrollTo(scrollOffset: number): void {\n scrollOffset = Math.max(0, scrollOffset);\n\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n return {\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true,\n };\n }, this._resetIsScrollingDebounced);\n }\n\n scrollToItem(index: number, align: ScrollToAlign = 'auto'): void {\n const { itemCount } = this.props;\n const { scrollOffset } = this.state;\n\n index = Math.max(0, Math.min(index, itemCount - 1));\n\n this.scrollTo(\n getOffsetForIndexAndAlignment(\n this.props,\n index,\n align,\n scrollOffset,\n this._instanceProps\n )\n );\n }\n\n componentDidMount() {\n const { direction, initialScrollOffset, layout } = this.props;\n\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentDidUpdate() {\n const { direction, layout } = this.props;\n const { scrollOffset, scrollUpdateWasRequested } = this.state;\n\n if (scrollUpdateWasRequested && this._outerRef != null) {\n const outerRef = ((this._outerRef: any): HTMLElement);\n\n // TODO Deprecate direction \"horizontal\"\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n default:\n const { clientWidth, scrollWidth } = outerRef;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n\n this._callPropsCallbacks();\n }\n\n componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n }\n\n render() {\n const {\n children,\n className,\n direction,\n height,\n innerRef,\n innerElementType,\n innerTagName,\n itemCount,\n itemData,\n itemKey = defaultItemKey,\n layout,\n outerElementType,\n outerTagName,\n style,\n useIsScrolling,\n width,\n } = this.props;\n const { isScrolling } = this.state;\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const onScroll = isHorizontal\n ? this._onScrollHorizontal\n : this._onScrollVertical;\n\n const [startIndex, stopIndex] = this._getRangeToRender();\n\n const items = [];\n if (itemCount > 0) {\n for (let index = startIndex; index <= stopIndex; index++) {\n items.push(\n createElement(children, {\n data: itemData,\n key: itemKey(index, itemData),\n index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(index),\n })\n );\n }\n }\n\n // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n const estimatedTotalSize = getEstimatedTotalSize(\n this.props,\n this._instanceProps\n );\n\n return createElement(\n outerElementType || outerTagName || 'div',\n {\n className,\n onScroll,\n ref: this._outerRefSetter,\n style: {\n position: 'relative',\n height,\n width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction,\n ...style,\n },\n },\n createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%',\n },\n })\n );\n }\n\n _callOnItemsRendered: (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) => void;\n _callOnItemsRendered = memoizeOne(\n (\n overscanStartIndex: number,\n overscanStopIndex: number,\n visibleStartIndex: number,\n visibleStopIndex: number\n ) =>\n ((this.props.onItemsRendered: any): onItemsRenderedCallback)({\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n })\n );\n\n _callOnScroll: (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) => void;\n _callOnScroll = memoizeOne(\n (\n scrollDirection: ScrollDirection,\n scrollOffset: number,\n scrollUpdateWasRequested: boolean\n ) =>\n ((this.props.onScroll: any): onScrollCallback)({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n })\n );\n\n _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n const { itemCount } = this.props;\n if (itemCount > 0) {\n const [\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex,\n ] = this._getRangeToRender();\n this._callOnItemsRendered(\n overscanStartIndex,\n overscanStopIndex,\n visibleStartIndex,\n visibleStopIndex\n );\n }\n }\n\n if (typeof this.props.onScroll === 'function') {\n const {\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested,\n } = this.state;\n this._callOnScroll(\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested\n );\n }\n }\n\n // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n _getItemStyle: (index: number) => Object;\n _getItemStyle = (index: number): Object => {\n const { direction, itemSize, layout } = this.props;\n\n const itemStyleCache = this._getItemStyleCache(\n shouldResetStyleCacheOnItemSizeChange && itemSize,\n shouldResetStyleCacheOnItemSizeChange && layout,\n shouldResetStyleCacheOnItemSizeChange && direction\n );\n\n let style;\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n const offset = getItemOffset(this.props, index, this._instanceProps);\n const size = getItemSize(this.props, index, this._instanceProps);\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal =\n direction === 'horizontal' || layout === 'horizontal';\n\n const isRtl = direction === 'rtl';\n const offsetHorizontal = isHorizontal ? offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%',\n };\n }\n\n return style;\n };\n\n _getItemStyleCache: (_: any, __: any, ___: any) => ItemStyleCache;\n _getItemStyleCache = memoizeOne((_: any, __: any, ___: any) => ({}));\n\n _getRangeToRender(): [number, number, number, number] {\n const { itemCount, overscanCount } = this.props;\n const { isScrolling, scrollDirection, scrollOffset } = this.state;\n\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n\n const startIndex = getStartIndexForOffset(\n this.props,\n scrollOffset,\n this._instanceProps\n );\n const stopIndex = getStopIndexForStartIndex(\n this.props,\n startIndex,\n scrollOffset,\n this._instanceProps\n );\n\n // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n const overscanBackward =\n !isScrolling || scrollDirection === 'backward'\n ? Math.max(1, overscanCount)\n : 1;\n const overscanForward =\n !isScrolling || scrollDirection === 'forward'\n ? Math.max(1, overscanCount)\n : 1;\n\n return [\n Math.max(0, startIndex - overscanBackward),\n Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)),\n startIndex,\n stopIndex,\n ];\n }\n\n _onScrollHorizontal = (event: ScrollEvent): void => {\n const { clientWidth, scrollLeft, scrollWidth } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n const { direction } = this.props;\n\n let scrollOffset = scrollLeft;\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n scrollOffset = Math.max(\n 0,\n Math.min(scrollOffset, scrollWidth - clientWidth)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollLeft ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _onScrollVertical = (event: ScrollEvent): void => {\n const { clientHeight, scrollHeight, scrollTop } = event.currentTarget;\n this.setState(prevState => {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n\n // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n const scrollOffset = Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n );\n\n return {\n isScrolling: true,\n scrollDirection:\n prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset,\n scrollUpdateWasRequested: false,\n };\n }, this._resetIsScrollingDebounced);\n };\n\n _outerRefSetter = (ref: any): void => {\n const { outerRef } = this.props;\n\n this._outerRef = ((ref: any): HTMLDivElement);\n\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (\n outerRef != null &&\n typeof outerRef === 'object' &&\n outerRef.hasOwnProperty('current')\n ) {\n outerRef.current = ref;\n }\n };\n\n _resetIsScrollingDebounced = () => {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n\n this._resetIsScrollingTimeoutId = requestTimeout(\n this._resetIsScrolling,\n IS_SCROLLING_DEBOUNCE_INTERVAL\n );\n };\n\n _resetIsScrolling = () => {\n this._resetIsScrollingTimeoutId = null;\n\n this.setState({ isScrolling: false }, () => {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n this._getItemStyleCache(-1, null);\n });\n };\n };\n}\n\n// NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nconst validateSharedProps = (\n {\n children,\n direction,\n height,\n layout,\n innerTagName,\n outerTagName,\n width,\n }: Props,\n { instance }: State\n): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn(\n 'The innerTagName and outerTagName props have been deprecated. ' +\n 'Please use the innerElementType and outerElementType props instead.'\n );\n }\n }\n\n // TODO Deprecate direction \"horizontal\"\n const isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn(\n 'The direction prop should be either \"ltr\" (default) or \"rtl\". ' +\n 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.'\n );\n }\n break;\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"direction\" prop has been specified. ' +\n 'Value should be either \"ltr\" or \"rtl\". ' +\n `\"${direction}\" was specified.`\n );\n }\n\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n default:\n throw Error(\n 'An invalid \"layout\" prop has been specified. ' +\n 'Value should be either \"horizontal\" or \"vertical\". ' +\n `\"${layout}\" was specified.`\n );\n }\n\n if (children == null) {\n throw Error(\n 'An invalid \"children\" prop has been specified. ' +\n 'Value should be a React component. ' +\n `\"${children === null ? 'null' : typeof children}\" was specified.`\n );\n }\n\n if (isHorizontal && typeof width !== 'number') {\n throw Error(\n 'An invalid \"width\" prop has been specified. ' +\n 'Horizontal lists must specify a number for width. ' +\n `\"${width === null ? 'null' : typeof width}\" was specified.`\n );\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error(\n 'An invalid \"height\" prop has been specified. ' +\n 'Vertical lists must specify a number for height. ' +\n `\"${height === null ? 'null' : typeof height}\" was specified.`\n );\n }\n }\n};\n","// @flow\n\nimport createGridComponent from './createGridComponent';\n\nimport type { Props, ScrollToAlign } from './createGridComponent';\n\nconst FixedSizeGrid = createGridComponent({\n getColumnOffset: ({ columnWidth }: Props, index: number): number =>\n index * ((columnWidth: any): number),\n\n getColumnWidth: ({ columnWidth }: Props, index: number): number =>\n ((columnWidth: any): number),\n\n getRowOffset: ({ rowHeight }: Props, index: number): number =>\n index * ((rowHeight: any): number),\n\n getRowHeight: ({ rowHeight }: Props, index: number): number =>\n ((rowHeight: any): number),\n\n getEstimatedTotalHeight: ({ rowCount, rowHeight }: Props) =>\n ((rowHeight: any): number) * rowCount,\n\n getEstimatedTotalWidth: ({ columnCount, columnWidth }: Props) =>\n ((columnWidth: any): number) * columnCount,\n\n getOffsetForColumnAndAlignment: (\n { columnCount, columnWidth, width }: Props,\n columnIndex: number,\n align: ScrollToAlign,\n scrollLeft: number,\n instanceProps: typeof undefined,\n scrollbarSize: number\n ): number => {\n const lastColumnOffset = Math.max(\n 0,\n columnCount * ((columnWidth: any): number) - width\n );\n const maxOffset = Math.min(\n lastColumnOffset,\n columnIndex * ((columnWidth: any): number)\n );\n const minOffset = Math.max(\n 0,\n columnIndex * ((columnWidth: any): number) -\n width +\n scrollbarSize +\n ((columnWidth: any): number)\n );\n\n if (align === 'smart') {\n if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n const middleOffset = Math.round(\n minOffset + (maxOffset - minOffset) / 2\n );\n if (middleOffset < Math.ceil(width / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n return lastColumnOffset; // near the end\n } else {\n return middleOffset;\n }\n case 'auto':\n default:\n if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n return scrollLeft;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollLeft < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n\n getOffsetForRowAndAlignment: (\n { rowHeight, height, rowCount }: Props,\n rowIndex: number,\n align: ScrollToAlign,\n scrollTop: number,\n instanceProps: typeof undefined,\n scrollbarSize: number\n ): number => {\n const lastRowOffset = Math.max(\n 0,\n rowCount * ((rowHeight: any): number) - height\n );\n const maxOffset = Math.min(\n lastRowOffset,\n rowIndex * ((rowHeight: any): number)\n );\n const minOffset = Math.max(\n 0,\n rowIndex * ((rowHeight: any): number) -\n height +\n scrollbarSize +\n ((rowHeight: any): number)\n );\n\n if (align === 'smart') {\n if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n const middleOffset = Math.round(\n minOffset + (maxOffset - minOffset) / 2\n );\n if (middleOffset < Math.ceil(height / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n return lastRowOffset; // near the end\n } else {\n return middleOffset;\n }\n case 'auto':\n default:\n if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n return scrollTop;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollTop < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n\n getColumnStartIndexForOffset: (\n { columnWidth, columnCount }: Props,\n scrollLeft: number\n ): number =>\n Math.max(\n 0,\n Math.min(\n columnCount - 1,\n Math.floor(scrollLeft / ((columnWidth: any): number))\n )\n ),\n\n getColumnStopIndexForStartIndex: (\n { columnWidth, columnCount, width }: Props,\n startIndex: number,\n scrollLeft: number\n ): number => {\n const left = startIndex * ((columnWidth: any): number);\n const numVisibleColumns = Math.ceil(\n (width + scrollLeft - left) / ((columnWidth: any): number)\n );\n return Math.max(\n 0,\n Math.min(\n columnCount - 1,\n startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n )\n );\n },\n\n getRowStartIndexForOffset: (\n { rowHeight, rowCount }: Props,\n scrollTop: number\n ): number =>\n Math.max(\n 0,\n Math.min(rowCount - 1, Math.floor(scrollTop / ((rowHeight: any): number)))\n ),\n\n getRowStopIndexForStartIndex: (\n { rowHeight, rowCount, height }: Props,\n startIndex: number,\n scrollTop: number\n ): number => {\n const top = startIndex * ((rowHeight: any): number);\n const numVisibleRows = Math.ceil(\n (height + scrollTop - top) / ((rowHeight: any): number)\n );\n return Math.max(\n 0,\n Math.min(\n rowCount - 1,\n startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n )\n );\n },\n\n initInstanceProps(props: Props): any {\n // Noop\n },\n\n shouldResetStyleCacheOnItemSizeChange: true,\n\n validateProps: ({ columnWidth, rowHeight }: Props): void => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'number') {\n throw Error(\n 'An invalid \"columnWidth\" prop has been specified. ' +\n 'Value should be a number. ' +\n `\"${\n columnWidth === null ? 'null' : typeof columnWidth\n }\" was specified.`\n );\n }\n\n if (typeof rowHeight !== 'number') {\n throw Error(\n 'An invalid \"rowHeight\" prop has been specified. ' +\n 'Value should be a number. ' +\n `\"${rowHeight === null ? 'null' : typeof rowHeight}\" was specified.`\n );\n }\n }\n },\n});\n\nexport default FixedSizeGrid;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nclass TableHeader extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.renderHeaderRow = this.renderHeaderRow.bind(this);\n this.renderFrozenRow = this.renderFrozenRow.bind(this);\n this._setRef = this._setRef.bind(this);\n }\n\n scrollTo(offset) {\n if (this.headerRef) this.headerRef.scrollLeft = offset;\n }\n\n renderHeaderRow(height, index) {\n const { columns, headerRenderer } = this.props;\n if (height <= 0) return null;\n\n const style = { width: '100%', height };\n return headerRenderer({ style, columns, headerIndex: index });\n }\n\n renderFrozenRow(rowData, index) {\n const { columns, rowHeight, rowRenderer } = this.props;\n const style = { width: '100%', height: rowHeight };\n // for frozen row the `rowIndex` is negative\n const rowIndex = -index - 1;\n return rowRenderer({ style, columns, rowData, rowIndex });\n }\n\n render() {\n const { className, width, height, rowWidth, headerHeight, frozenData } = this.props;\n if (height <= 0) return null;\n\n const style = {\n width,\n height: height,\n position: 'relative',\n overflow: 'hidden',\n };\n\n const innerStyle = {\n width: rowWidth,\n height,\n };\n\n const rowHeights = Array.isArray(headerHeight) ? headerHeight : [headerHeight];\n return (\n
\n
\n {rowHeights.map(this.renderHeaderRow)}\n {frozenData.map(this.renderFrozenRow)}\n
\n
\n );\n }\n\n _setRef(ref) {\n this.headerRef = ref;\n }\n}\n\nTableHeader.propTypes = {\n className: PropTypes.string,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n headerHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]).isRequired,\n rowWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n data: PropTypes.array.isRequired,\n frozenData: PropTypes.array,\n headerRenderer: PropTypes.func.isRequired,\n rowRenderer: PropTypes.func.isRequired,\n};\n\nexport default TableHeader;\n","import React from 'react';\n\nexport function renderElement(renderer, props) {\n if (React.isValidElement(renderer)) {\n if (!props) return renderer;\n return React.cloneElement(renderer, props);\n } else if (typeof renderer === 'function') {\n if (renderer.prototype && renderer.prototype.isReactComponent) {\n return React.createElement(renderer, props);\n } else if (renderer.defaultProps) {\n return renderer({ ...renderer.defaultProps, ...props });\n }\n return renderer(props);\n } else {\n return null;\n }\n}\n\nexport function normalizeColumns(elements) {\n const columns = [];\n React.Children.forEach(elements, element => {\n if (React.isValidElement(element) && element.key) {\n const column = { ...element.props, key: element.key };\n columns.push(column);\n }\n });\n return columns;\n}\n\nexport function isObjectEqual(objA, objB, ignoreFunction = true) {\n if (objA === objB) return true;\n if (objA === null && objB === null) return true;\n if (objA === null || objB === null) return false;\n if (typeof objA !== 'object' || typeof objB !== 'object') return false;\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (let i = 0; i < keysA.length; i++) {\n const key = keysA[i];\n\n if (key === '_owner' && objA.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n continue;\n }\n\n const valueA = objA[key];\n const valueB = objB[key];\n const valueAType = typeof valueA;\n\n if (valueAType !== typeof valueB) return false;\n if (valueAType === 'function' && ignoreFunction) continue;\n if (valueAType === 'object') {\n if (!isObjectEqual(valueA, valueB, ignoreFunction)) return false;\n else continue;\n }\n if (valueA !== valueB) return false;\n }\n return true;\n}\n\nexport function callOrReturn(funcOrValue, ...args) {\n return typeof funcOrValue === 'function' ? funcOrValue(...args) : funcOrValue;\n}\n\nexport function hasChildren(data) {\n return Array.isArray(data.children) && data.children.length > 0;\n}\n\nexport function unflatten(array, rootId = null, dataKey = 'id', parentKey = 'parentId') {\n const tree = [];\n const childrenMap = {};\n\n const length = array.length;\n for (let i = 0; i < length; i++) {\n const item = { ...array[i] };\n const id = item[dataKey];\n const parentId = item[parentKey];\n\n if (Array.isArray(item.children)) {\n childrenMap[id] = item.children.concat(childrenMap[id] || []);\n } else if (!childrenMap[id]) {\n childrenMap[id] = [];\n }\n item.children = childrenMap[id];\n\n if (parentId !== undefined && parentId !== rootId) {\n if (!childrenMap[parentId]) childrenMap[parentId] = [];\n childrenMap[parentId].push(item);\n } else {\n tree.push(item);\n }\n }\n\n return tree;\n}\n\nexport function flattenOnKeys(tree, keys, depthMap = {}, dataKey = 'id') {\n if (!keys || !keys.length) return tree;\n\n const array = [];\n const keysSet = new Set();\n keys.forEach(x => keysSet.add(x));\n\n let stack = [].concat(tree);\n stack.forEach(x => (depthMap[x[dataKey]] = 0));\n while (stack.length > 0) {\n const item = stack.shift();\n\n array.push(item);\n if (keysSet.has(item[dataKey]) && Array.isArray(item.children) && item.children.length > 0) {\n stack = [].concat(item.children, stack);\n item.children.forEach(x => (depthMap[x[dataKey]] = depthMap[item[dataKey]] + 1));\n }\n }\n\n return array;\n}\n\n// Babel7 changed the behavior of @babel/plugin-transform-spread in https://github.com/babel/babel/pull/6763\n// [...array] is transpiled to array.concat() while it was [].concat(array) before\n// this change breaks immutable array(seamless-immutable), [...array] should always return mutable array\nexport function cloneArray(array) {\n if (!Array.isArray(array)) return [];\n return [].concat(array);\n}\n\nexport function noop() {}\n\nexport function toString(value) {\n if (typeof value === 'string') return value;\n if (value === null || value === undefined) return '';\n return value.toString ? value.toString() : '';\n}\n\nfunction getPathSegments(path) {\n const pathArray = path.split('.');\n const parts = [];\n\n for (let i = 0; i < pathArray.length; i++) {\n let p = pathArray[i];\n\n while (p[p.length - 1] === '\\\\' && pathArray[i + 1] !== undefined) {\n p = p.slice(0, -1) + '.';\n p += pathArray[++i];\n }\n\n parts.push(p);\n }\n\n return parts;\n}\n\n// changed from https://github.com/sindresorhus/dot-prop/blob/master/index.js\nexport function getValue(object, path, defaultValue) {\n if (object === null || typeof object !== 'object' || typeof path !== 'string') {\n return defaultValue;\n }\n\n const pathArray = getPathSegments(path);\n\n for (let i = 0; i < pathArray.length; i++) {\n if (!Object.prototype.propertyIsEnumerable.call(object, pathArray[i])) {\n return defaultValue;\n }\n\n object = object[pathArray[i]];\n\n if (object === undefined || object === null) {\n if (i !== pathArray.length - 1) {\n return defaultValue;\n }\n\n break;\n }\n }\n\n return object;\n}\n\n// copied from https://www.30secondsofcode.org/js/s/debounce\nexport const debounce = (fn, ms = 0) => {\n let timeoutId;\n return function(...args) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn.apply(this, args), ms);\n };\n};\n\n// copied from https://www.30secondsofcode.org/js/s/throttle\nexport const throttle = (fn, wait) => {\n let inThrottle, lastFn, lastTime;\n return function() {\n const context = this,\n args = arguments;\n if (!inThrottle) {\n fn.apply(context, args);\n lastTime = Date.now();\n inThrottle = true;\n } else {\n clearTimeout(lastFn);\n lastFn = setTimeout(function() {\n if (Date.now() - lastTime >= wait) {\n fn.apply(context, args);\n lastTime = Date.now();\n }\n }, Math.max(wait - (Date.now() - lastTime), 0));\n }\n };\n};\n\n// copied from https://github.com/react-bootstrap/dom-helpers\nlet scrollbarSize;\nexport function getScrollbarSize(recalculate) {\n if ((!scrollbarSize && scrollbarSize !== 0) || recalculate) {\n if (typeof window !== 'undefined' && window.document && window.document.createElement) {\n let scrollDiv = document.createElement('div');\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n\n document.body.appendChild(scrollDiv);\n scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return scrollbarSize;\n}\n\nexport function addClassName(el, className) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nexport function removeClassName(el, className) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}\n\nexport function getEstimatedTotalRowsHeight(data, estimatedRowHeight) {\n return typeof estimatedRowHeight === 'function'\n ? data.reduce((height, rowData, rowIndex) => height + estimatedRowHeight({ rowData, rowIndex }), 0)\n : data.length * estimatedRowHeight;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport { FixedSizeGrid, VariableSizeGrid } from 'react-window';\nimport memoize from 'memoize-one';\n\nimport Header from './TableHeader';\nimport { getEstimatedTotalRowsHeight } from './utils';\n\n/**\n * A wrapper of the Grid for internal only\n */\nclass GridTable extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this._setHeaderRef = this._setHeaderRef.bind(this);\n this._setBodyRef = this._setBodyRef.bind(this);\n this._setInnerRef = this._setInnerRef.bind(this);\n this._itemKey = this._itemKey.bind(this);\n this._getBodyWidth = this._getBodyWidth.bind(this);\n this._handleItemsRendered = this._handleItemsRendered.bind(this);\n this._resetColumnWidthCache = memoize(bodyWidth => {\n if (!this.props.estimatedRowHeight) return;\n this.bodyRef && this.bodyRef.resetAfterColumnIndex(0, false);\n });\n this._getEstimatedTotalRowsHeight = memoize(getEstimatedTotalRowsHeight);\n\n this.renderRow = this.renderRow.bind(this);\n }\n\n resetAfterRowIndex(rowIndex = 0, shouldForceUpdate) {\n if (!this.props.estimatedRowHeight) return;\n this.bodyRef && this.bodyRef.resetAfterRowIndex(rowIndex, shouldForceUpdate);\n }\n\n forceUpdateTable() {\n this.headerRef && this.headerRef.forceUpdate();\n this.bodyRef && this.bodyRef.forceUpdate();\n }\n\n scrollToPosition(args) {\n this.headerRef && this.headerRef.scrollTo(args.scrollLeft);\n this.bodyRef && this.bodyRef.scrollTo(args);\n }\n\n scrollToTop(scrollTop) {\n this.bodyRef && this.bodyRef.scrollTo({ scrollTop });\n }\n\n scrollToLeft(scrollLeft) {\n this.headerRef && this.headerRef.scrollTo(scrollLeft);\n this.bodyRef && this.bodyRef.scrollToPosition({ scrollLeft });\n }\n\n scrollToRow(rowIndex = 0, align = 'auto') {\n this.bodyRef && this.bodyRef.scrollToItem({ rowIndex, align });\n }\n\n getTotalRowsHeight() {\n const { data, rowHeight, estimatedRowHeight } = this.props;\n\n if (estimatedRowHeight) {\n return (\n (this.innerRef && this.innerRef.clientHeight) || this._getEstimatedTotalRowsHeight(data, estimatedRowHeight)\n );\n }\n return data.length * rowHeight;\n }\n\n renderRow(args) {\n const { data, columns, rowRenderer } = this.props;\n const rowData = data[args.rowIndex];\n return rowRenderer({ ...args, columns, rowData });\n }\n\n render() {\n const {\n containerStyle,\n classPrefix,\n className,\n data,\n frozenData,\n width,\n height,\n rowHeight,\n estimatedRowHeight,\n getRowHeight,\n headerWidth,\n bodyWidth,\n useIsScrolling,\n onScroll,\n hoveredRowKey,\n overscanRowCount,\n // omit from rest\n style,\n onScrollbarPresenceChange,\n ...rest\n } = this.props;\n const headerHeight = this._getHeaderHeight();\n const frozenRowCount = frozenData.length;\n const frozenRowsHeight = rowHeight * frozenRowCount;\n const cls = cn(`${classPrefix}__table`, className);\n const containerProps = containerStyle ? { style: containerStyle } : null;\n const Grid = estimatedRowHeight ? VariableSizeGrid : FixedSizeGrid;\n\n this._resetColumnWidthCache(bodyWidth);\n return (\n
\n \n {headerHeight + frozenRowsHeight > 0 && (\n // put header after body and reverse the display order via css\n // to prevent header's shadow being covered by body\n 0 ? hoveredRowKey : null}\n />\n )}\n
\n );\n }\n\n _setHeaderRef(ref) {\n this.headerRef = ref;\n }\n\n _setBodyRef(ref) {\n this.bodyRef = ref;\n }\n\n _setInnerRef(ref) {\n this.innerRef = ref;\n }\n\n _itemKey({ rowIndex }) {\n const { data, rowKey } = this.props;\n return data[rowIndex][rowKey];\n }\n\n _getHeaderHeight() {\n const { headerHeight } = this.props;\n if (Array.isArray(headerHeight)) {\n return headerHeight.reduce((sum, height) => sum + height, 0);\n }\n return headerHeight;\n }\n\n _getBodyWidth() {\n return this.props.bodyWidth;\n }\n\n _handleItemsRendered({ overscanRowStartIndex, overscanRowStopIndex, visibleRowStartIndex, visibleRowStopIndex }) {\n this.props.onRowsRendered({\n overscanStartIndex: overscanRowStartIndex,\n overscanStopIndex: overscanRowStopIndex,\n startIndex: visibleRowStartIndex,\n stopIndex: visibleRowStopIndex,\n });\n }\n}\n\nGridTable.propTypes = {\n containerStyle: PropTypes.object,\n classPrefix: PropTypes.string,\n className: PropTypes.string,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n headerHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]).isRequired,\n headerWidth: PropTypes.number.isRequired,\n bodyWidth: PropTypes.number.isRequired,\n rowHeight: PropTypes.number.isRequired,\n estimatedRowHeight: PropTypes.oneOfType([PropTypes.func, PropTypes.number]),\n getRowHeight: PropTypes.func,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n data: PropTypes.array.isRequired,\n frozenData: PropTypes.array,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n useIsScrolling: PropTypes.bool,\n overscanRowCount: PropTypes.number,\n hoveredRowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n style: PropTypes.object,\n onScrollbarPresenceChange: PropTypes.func,\n onScroll: PropTypes.func,\n onRowsRendered: PropTypes.func,\n headerRenderer: PropTypes.func.isRequired,\n rowRenderer: PropTypes.func.isRequired,\n};\n\nexport default GridTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { renderElement } from './utils';\n\n/**\n * HeaderRow component for BaseTable\n */\nconst TableHeaderRow = ({\n className,\n style,\n columns,\n headerIndex,\n cellRenderer,\n headerRenderer,\n expandColumnKey,\n expandIcon: ExpandIcon,\n tagName: Tag,\n ...rest\n}) => {\n let cells = columns.map((column, columnIndex) =>\n cellRenderer({\n columns,\n column,\n columnIndex,\n headerIndex,\n expandIcon: column.key === expandColumnKey && ,\n })\n );\n\n if (headerRenderer) {\n cells = renderElement(headerRenderer, { cells, columns, headerIndex });\n }\n\n return (\n \n {cells}\n \n );\n};\n\nTableHeaderRow.defaultProps = {\n tagName: 'div',\n};\n\nTableHeaderRow.propTypes = {\n isScrolling: PropTypes.bool,\n className: PropTypes.string,\n style: PropTypes.object,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n headerIndex: PropTypes.number,\n cellRenderer: PropTypes.func,\n headerRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n expandColumnKey: PropTypes.string,\n expandIcon: PropTypes.func,\n tagName: PropTypes.elementType,\n};\n\nexport default TableHeaderRow;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { renderElement } from './utils';\n\n/**\n * Row component for BaseTable\n */\nclass TableRow extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n measured: false,\n };\n\n this._setRef = this._setRef.bind(this);\n this._handleExpand = this._handleExpand.bind(this);\n }\n\n componentDidMount() {\n this.props.estimatedRowHeight && this.props.rowIndex >= 0 && this._measureHeight(true);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (\n this.props.estimatedRowHeight &&\n this.props.rowIndex >= 0 &&\n // should not re-measure if it's updated after measured and reset\n !this.props.getIsResetting() &&\n this.state.measured &&\n prevState.measured\n ) {\n this.setState({ measured: false }, () => this._measureHeight());\n }\n }\n\n render() {\n /* eslint-disable no-unused-vars */\n const {\n isScrolling,\n className,\n style,\n columns,\n rowIndex,\n rowData,\n expandColumnKey,\n depth,\n rowEventHandlers,\n estimatedRowHeight,\n rowRenderer,\n cellRenderer,\n expandIconRenderer,\n tagName: Tag,\n // omit the following from rest\n rowKey,\n getIsResetting,\n onRowHover,\n onRowExpand,\n onRowHeightChange,\n ...rest\n } = this.props;\n /* eslint-enable no-unused-vars */\n\n const expandIcon = expandIconRenderer({ rowData, rowIndex, depth, onExpand: this._handleExpand });\n let cells = columns.map((column, columnIndex) =>\n cellRenderer({\n isScrolling,\n columns,\n column,\n columnIndex,\n rowData,\n rowIndex,\n expandIcon: column.key === expandColumnKey && expandIcon,\n })\n );\n\n if (rowRenderer) {\n cells = renderElement(rowRenderer, { isScrolling, cells, columns, rowData, rowIndex, depth });\n }\n\n const eventHandlers = this._getEventHandlers(rowEventHandlers);\n\n if (estimatedRowHeight && rowIndex >= 0) {\n const { height, ...otherStyles } = style;\n return (\n \n {cells}\n \n );\n }\n\n return (\n \n {cells}\n \n );\n }\n\n _setRef(ref) {\n this.ref = ref;\n }\n\n _handleExpand(expanded) {\n const { onRowExpand, rowData, rowIndex, rowKey } = this.props;\n onRowExpand && onRowExpand({ expanded, rowData, rowIndex, rowKey });\n }\n\n _measureHeight(initialMeasure) {\n if (!this.ref) return;\n\n const { style, rowKey, onRowHeightChange, rowIndex, columns } = this.props;\n const height = this.ref.getBoundingClientRect().height;\n this.setState({ measured: true }, () => {\n if (initialMeasure || height !== style.height)\n onRowHeightChange(rowKey, height, rowIndex, columns[0] && !columns[0].__placeholder__ && columns[0].frozen);\n });\n }\n\n _getEventHandlers(handlers = {}) {\n const { rowData, rowIndex, rowKey, onRowHover } = this.props;\n const eventHandlers = {};\n Object.keys(handlers).forEach(eventKey => {\n const callback = handlers[eventKey];\n if (typeof callback === 'function') {\n eventHandlers[eventKey] = event => {\n callback({ rowData, rowIndex, rowKey, event });\n };\n }\n });\n\n if (onRowHover) {\n const mouseEnterHandler = eventHandlers['onMouseEnter'];\n eventHandlers['onMouseEnter'] = event => {\n onRowHover({\n hovered: true,\n rowData,\n rowIndex,\n rowKey,\n event,\n });\n mouseEnterHandler && mouseEnterHandler(event);\n };\n\n const mouseLeaveHandler = eventHandlers['onMouseLeave'];\n eventHandlers['onMouseLeave'] = event => {\n onRowHover({\n hovered: false,\n rowData,\n rowIndex,\n rowKey,\n event,\n });\n mouseLeaveHandler && mouseLeaveHandler(event);\n };\n }\n\n return eventHandlers;\n }\n}\n\nTableRow.defaultProps = {\n tagName: 'div',\n};\n\nTableRow.propTypes = {\n isScrolling: PropTypes.bool,\n className: PropTypes.string,\n style: PropTypes.object,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n rowData: PropTypes.object.isRequired,\n rowIndex: PropTypes.number.isRequired,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n expandColumnKey: PropTypes.string,\n depth: PropTypes.number,\n rowEventHandlers: PropTypes.object,\n rowRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n cellRenderer: PropTypes.func,\n expandIconRenderer: PropTypes.func,\n estimatedRowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n getIsResetting: PropTypes.func,\n onRowHover: PropTypes.func,\n onRowExpand: PropTypes.func,\n onRowHeightChange: PropTypes.func,\n tagName: PropTypes.elementType,\n};\n\nexport default TableRow;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * HeaderCell component for BaseTable\n */\nconst TableHeaderCell = ({ className, column, columnIndex }) =>
{column.title}
;\n\nTableHeaderCell.propTypes = {\n className: PropTypes.string,\n column: PropTypes.object,\n columnIndex: PropTypes.number,\n};\n\nexport default TableHeaderCell;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { toString } from './utils';\n\n/**\n * Cell component for BaseTable\n */\nconst TableCell = ({ className, cellData, column, columnIndex, rowData, rowIndex }) => (\n
{React.isValidElement(cellData) ? cellData : toString(cellData)}
\n);\n\nTableCell.propTypes = {\n className: PropTypes.string,\n cellData: PropTypes.any,\n column: PropTypes.object,\n columnIndex: PropTypes.number,\n rowData: PropTypes.object,\n rowIndex: PropTypes.number,\n};\n\nexport default TableCell;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Alignment = {\n LEFT: 'left',\n CENTER: 'center',\n RIGHT: 'right',\n};\n\nexport const FrozenDirection = {\n LEFT: 'left',\n RIGHT: 'right',\n DEFAULT: true,\n NONE: false,\n};\n\n/**\n * Column for BaseTable\n */\nclass Column extends React.Component {}\n\nColumn.propTypes = {\n /**\n * Class name for the column cell, could be a callback to return the class name\n * The callback is of the shape of `({ cellData, columns, column, columnIndex, rowData, rowIndex }) => string`\n */\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * Class name for the column header, could be a callback to return the class name\n * The callback is of the shape of `({ columns, column, columnIndex, headerIndex }) => string`\n */\n headerClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * Custom style for the column cell, including the header cells\n */\n style: PropTypes.object,\n /**\n * Title for the column header\n */\n title: PropTypes.string,\n /**\n * Data key for the column cell, could be \"a.b.c\"\n */\n dataKey: PropTypes.string,\n /**\n * Custom cell data getter\n * The handler is of the shape of `({ columns, column, columnIndex, rowData, rowIndex }) => node`\n */\n dataGetter: PropTypes.func,\n /**\n * Alignment of the column cell\n */\n align: PropTypes.oneOf(['left', 'center', 'right']),\n /**\n * Flex grow style, defaults to 0\n */\n flexGrow: PropTypes.number,\n /**\n * Flex shrink style, defaults to 1 for flexible table and 0 for fixed table\n */\n flexShrink: PropTypes.number,\n /**\n * The width of the column, gutter width is not included\n */\n width: PropTypes.number.isRequired,\n /**\n * Maximum width of the column, used if the column is resizable\n */\n maxWidth: PropTypes.number,\n /**\n * Minimum width of the column, used if the column is resizable\n */\n minWidth: PropTypes.number,\n /**\n * Whether the column is frozen and what's the frozen side\n */\n frozen: PropTypes.oneOf(['left', 'right', true, false]),\n /**\n * Whether the column is hidden\n */\n hidden: PropTypes.bool,\n /**\n * Whether the column is resizable, defaults to false\n */\n resizable: PropTypes.bool,\n /**\n * Whether the column is sortable, defaults to false\n */\n sortable: PropTypes.bool,\n /**\n * Custom column cell renderer\n * The renderer receives props `{ cellData, columns, column, columnIndex, rowData, rowIndex, container, isScrolling }`\n */\n cellRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n /**\n * Custom column header renderer\n * The renderer receives props `{ columns, column, columnIndex, headerIndex, container }`\n */\n headerRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n};\n\nColumn.Alignment = Alignment;\nColumn.FrozenDirection = FrozenDirection;\n\nexport default Column;\n","/**\n * Sort order for BaseTable\n */\nconst SortOrder = {\n /**\n * Sort data in ascending order\n */\n ASC: 'asc',\n /**\n * Sort data in descending order\n */\n DESC: 'desc',\n};\n\nexport default SortOrder;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\n\n/**\n * default ExpandIcon for BaseTable\n */\nclass ExpandIcon extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this._handleClick = this._handleClick.bind(this);\n }\n\n render() {\n const { expandable, expanded, indentSize, depth, onExpand, ...rest } = this.props;\n if (!expandable && indentSize === 0) return null;\n\n const cls = cn('BaseTable__expand-icon', {\n 'BaseTable__expand-icon--expanded': expanded,\n });\n return (\n \n {expandable && '\\u25B8'}\n \n );\n }\n\n _handleClick(e) {\n e.stopPropagation();\n e.preventDefault();\n const { onExpand, expanded } = this.props;\n onExpand(!expanded);\n }\n}\n\nExpandIcon.defaultProps = {\n depth: 0,\n indentSize: 16,\n};\n\nExpandIcon.propTypes = {\n expandable: PropTypes.bool,\n expanded: PropTypes.bool,\n indentSize: PropTypes.number,\n depth: PropTypes.number,\n onExpand: PropTypes.func,\n};\n\nexport default ExpandIcon;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\n\nimport SortOrder from './SortOrder';\n\n/**\n * default SortIndicator for BaseTable\n */\nconst SortIndicator = ({ sortOrder, className, style }) => {\n const cls = cn('BaseTable__sort-indicator', className, {\n 'BaseTable__sort-indicator--descending': sortOrder === SortOrder.DESC,\n });\n return (\n \n {sortOrder === SortOrder.DESC ? '\\u2193' : '\\u2191'}\n \n );\n};\n\nSortIndicator.propTypes = {\n sortOrder: PropTypes.oneOf([SortOrder.ASC, SortOrder.DESC]),\n className: PropTypes.string,\n style: PropTypes.object,\n};\n\nexport default SortIndicator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { noop, addClassName, removeClassName } from './utils';\n\nconst INVALID_VALUE = null;\n\n// copied from https://github.com/mzabriskie/react-draggable/blob/master/lib/utils/domFns.js\nexport function addUserSelectStyles(doc) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nexport function removeUserSelectStyles(doc) {\n if (!doc) return;\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n if (doc.selection) {\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n const selection = (doc.defaultView || window).getSelection();\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {\n // probably IE\n }\n}\n\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend',\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup',\n },\n};\n\nlet dragEventFor = eventsFor.mouse;\n\n/**\n * ColumnResizer for BaseTable\n */\nclass ColumnResizer extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.isDragging = false;\n this.lastX = INVALID_VALUE;\n this.width = 0;\n\n this._setHandleRef = this._setHandleRef.bind(this);\n this._handleClick = this._handleClick.bind(this);\n this._handleMouseDown = this._handleMouseDown.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this._handleTouchStart = this._handleTouchStart.bind(this);\n this._handleTouchEnd = this._handleTouchEnd.bind(this);\n this._handleDragStart = this._handleDragStart.bind(this);\n this._handleDragStop = this._handleDragStop.bind(this);\n this._handleDrag = this._handleDrag.bind(this);\n }\n\n componentWillUnmount() {\n if (this.handleRef) {\n const { ownerDocument } = this.handleRef;\n ownerDocument.removeEventListener(eventsFor.mouse.move, this._handleDrag);\n ownerDocument.removeEventListener(eventsFor.mouse.stop, this._handleDragStop);\n ownerDocument.removeEventListener(eventsFor.touch.move, this._handleDrag);\n ownerDocument.removeEventListener(eventsFor.touch.stop, this._handleDragStop);\n removeUserSelectStyles(ownerDocument);\n }\n }\n\n render() {\n const { style, column, onResizeStart, onResize, onResizeStop, minWidth, ...rest } = this.props;\n\n return (\n \n );\n }\n\n _setHandleRef(ref) {\n this.handleRef = ref;\n }\n\n _handleClick(e) {\n e.stopPropagation();\n }\n\n _handleMouseDown(e) {\n dragEventFor = eventsFor.mouse;\n this._handleDragStart(e);\n }\n\n _handleMouseUp(e) {\n dragEventFor = eventsFor.mouse;\n this._handleDragStop(e);\n }\n\n _handleTouchStart(e) {\n dragEventFor = eventsFor.touch;\n this._handleDragStart(e);\n }\n\n _handleTouchEnd(e) {\n dragEventFor = eventsFor.touch;\n this._handleDragStop(e);\n }\n\n _handleDragStart(e) {\n if (typeof e.button === 'number' && e.button !== 0) return;\n\n this.isDragging = true;\n this.lastX = INVALID_VALUE;\n this.width = this.props.column.width;\n this.props.onResizeStart(this.props.column);\n\n const { ownerDocument } = this.handleRef;\n addUserSelectStyles(ownerDocument);\n ownerDocument.addEventListener(dragEventFor.move, this._handleDrag);\n ownerDocument.addEventListener(dragEventFor.stop, this._handleDragStop);\n }\n\n _handleDragStop(e) {\n if (!this.isDragging) return;\n this.isDragging = false;\n\n this.props.onResizeStop(this.props.column);\n\n const { ownerDocument } = this.handleRef;\n removeUserSelectStyles(ownerDocument);\n ownerDocument.removeEventListener(dragEventFor.move, this._handleDrag);\n ownerDocument.removeEventListener(dragEventFor.stop, this._handleDragStop);\n }\n\n _handleDrag(e) {\n let clientX = e.clientX;\n if (e.type === eventsFor.touch.move) {\n e.preventDefault();\n if (e.targetTouches && e.targetTouches[0]) clientX = e.targetTouches[0].clientX;\n }\n\n const { offsetParent } = this.handleRef;\n const offsetParentRect = offsetParent.getBoundingClientRect();\n const x = clientX + offsetParent.scrollLeft - offsetParentRect.left;\n\n if (this.lastX === INVALID_VALUE) {\n this.lastX = x;\n return;\n }\n\n const { column, minWidth: MIN_WIDTH } = this.props;\n const { width, maxWidth, minWidth = MIN_WIDTH } = column;\n const movedX = x - this.lastX;\n if (!movedX) return;\n\n this.width = this.width + movedX;\n this.lastX = x;\n\n let newWidth = this.width;\n if (maxWidth && newWidth > maxWidth) {\n newWidth = maxWidth;\n } else if (newWidth < minWidth) {\n newWidth = minWidth;\n }\n\n if (newWidth === width) return;\n this.props.onResize(column, newWidth);\n }\n}\n\nColumnResizer.defaultProps = {\n onResizeStart: noop,\n onResize: noop,\n onResizeStop: noop,\n minWidth: 30,\n};\n\nColumnResizer.propTypes = {\n /**\n * Custom style for the drag handler\n */\n style: PropTypes.object,\n /**\n * The column object to be dragged\n */\n column: PropTypes.object,\n /**\n * A callback function when resizing started\n * The callback is of the shape of `(column) => *`\n */\n onResizeStart: PropTypes.func,\n /**\n * A callback function when resizing the column\n * The callback is of the shape of `(column, width) => *`\n */\n onResize: PropTypes.func,\n /**\n * A callback function when resizing stopped\n * The callback is of the shape of `(column) => *`\n */\n onResizeStop: PropTypes.func,\n /**\n * Minimum width of the column could be resized to if the column's `minWidth` is not set\n */\n minWidth: PropTypes.number,\n};\n\nexport default ColumnResizer;\n","import { FrozenDirection } from './Column';\n\nexport default class ColumnManager {\n constructor(columns, fixed) {\n this._origColumns = [];\n this.reset(columns, fixed);\n }\n\n _cache(key, fn) {\n if (key in this._cached) return this._cached[key];\n this._cached[key] = fn();\n return this._cached[key];\n }\n\n reset(columns, fixed) {\n this._columns = columns.map(column => {\n let width = column.width;\n if (column.resizable) {\n // don't reset column's `width` if `width` prop doesn't change\n const idx = this._origColumns.findIndex(x => x.key === column.key);\n if (idx >= 0 && this._origColumns[idx].width === column.width) {\n width = this._columns[idx].width;\n }\n }\n return { ...column, width };\n });\n this._origColumns = columns;\n this._fixed = fixed;\n this._cached = {};\n this._columnStyles = this.recomputeColumnStyles();\n }\n\n resetCache() {\n this._cached = {};\n }\n\n getOriginalColumns() {\n return this._origColumns;\n }\n\n getColumns() {\n return this._columns;\n }\n\n getVisibleColumns() {\n return this._cache('visibleColumns', () => {\n return this._columns.filter(column => !column.hidden);\n });\n }\n\n hasFrozenColumns() {\n return this._cache('hasFrozenColumns', () => {\n return this._fixed && this.getVisibleColumns().some(column => !!column.frozen);\n });\n }\n\n hasLeftFrozenColumns() {\n return this._cache('hasLeftFrozenColumns', () => {\n return (\n this._fixed &&\n this.getVisibleColumns().some(column => column.frozen === FrozenDirection.LEFT || column.frozen === true)\n );\n });\n }\n\n hasRightFrozenColumns() {\n return this._cache('hasRightFrozenColumns', () => {\n return this._fixed && this.getVisibleColumns().some(column => column.frozen === FrozenDirection.RIGHT);\n });\n }\n\n getMainColumns() {\n return this._cache('mainColumns', () => {\n const columns = this.getVisibleColumns();\n if (!this.hasFrozenColumns()) return columns;\n\n const mainColumns = [];\n this.getLeftFrozenColumns().forEach(column => {\n //columns placeholder for the fixed table above them\n mainColumns.push({ ...column, [ColumnManager.PlaceholderKey]: true });\n });\n this.getVisibleColumns().forEach(column => {\n if (!column.frozen) mainColumns.push(column);\n });\n this.getRightFrozenColumns().forEach(column => {\n mainColumns.push({ ...column, [ColumnManager.PlaceholderKey]: true });\n });\n\n return mainColumns;\n });\n }\n\n getLeftFrozenColumns() {\n return this._cache('leftFrozenColumns', () => {\n if (!this._fixed) return [];\n return this.getVisibleColumns().filter(\n column => column.frozen === FrozenDirection.LEFT || column.frozen === true\n );\n });\n }\n\n getRightFrozenColumns() {\n return this._cache('rightFrozenColumns', () => {\n if (!this._fixed) return [];\n return this.getVisibleColumns().filter(column => column.frozen === FrozenDirection.RIGHT);\n });\n }\n\n getColumn(key) {\n const idx = this._columns.findIndex(column => column.key === key);\n return this._columns[idx];\n }\n\n getColumnsWidth() {\n return this._cache('columnsWidth', () => {\n return this.recomputeColumnsWidth(this.getVisibleColumns());\n });\n }\n\n getLeftFrozenColumnsWidth() {\n return this._cache('leftFrozenColumnsWidth', () => {\n return this.recomputeColumnsWidth(this.getLeftFrozenColumns());\n });\n }\n\n getRightFrozenColumnsWidth() {\n return this._cache('rightFrozenColumnsWidth', () => {\n return this.recomputeColumnsWidth(this.getRightFrozenColumns());\n });\n }\n\n recomputeColumnsWidth(columns) {\n return columns.reduce((width, column) => width + column.width, 0);\n }\n\n setColumnWidth(key, width) {\n const column = this.getColumn(key);\n column.width = width;\n this._cached = {};\n this._columnStyles[column.key] = this.recomputeColumnStyle(column);\n }\n\n getColumnStyle(key) {\n return this._columnStyles[key];\n }\n\n getColumnStyles() {\n return this._columnStyles;\n }\n\n recomputeColumnStyle(column) {\n let flexGrow = 0;\n let flexShrink = 0;\n if (!this._fixed) {\n flexGrow = typeof column.flexGrow === 'number' ? column.flexGrow : 0;\n flexShrink = typeof column.flexShrink === 'number' ? column.flexShrink : 1;\n }\n // workaround for Flex bug on IE: https://github.com/philipwalton/flexbugs#flexbug-7\n const flexValue = `${flexGrow} ${flexShrink} auto`;\n\n const style = {\n ...column.style,\n flex: flexValue,\n msFlex: flexValue,\n WebkitFlex: flexValue,\n width: column.width,\n overflow: 'hidden',\n };\n\n if (!this._fixed && column.maxWidth) {\n style.maxWidth = column.maxWidth;\n }\n if (!this._fixed && column.minWidth) {\n style.minWidth = column.minWidth;\n }\n\n return style;\n }\n\n recomputeColumnStyles() {\n return this._columns.reduce((styles, column) => {\n styles[column.key] = this.recomputeColumnStyle(column);\n return styles;\n }, {});\n }\n}\n\nColumnManager.PlaceholderKey = '__placeholder__';\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'classnames';\nimport memoize from 'memoize-one';\n\nimport GridTable from './GridTable';\nimport TableHeaderRow from './TableHeaderRow';\nimport TableRow from './TableRow';\nimport TableHeaderCell from './TableHeaderCell';\nimport TableCell from './TableCell';\nimport Column, { Alignment, FrozenDirection } from './Column';\nimport SortOrder from './SortOrder';\nimport ExpandIcon from './ExpandIcon';\nimport SortIndicator from './SortIndicator';\nimport ColumnResizer from './ColumnResizer';\nimport ColumnManager from './ColumnManager';\n\nimport {\n renderElement,\n normalizeColumns,\n getScrollbarSize as defaultGetScrollbarSize,\n getEstimatedTotalRowsHeight,\n isObjectEqual,\n callOrReturn,\n hasChildren,\n flattenOnKeys,\n cloneArray,\n getValue,\n throttle,\n debounce,\n noop,\n} from './utils';\n\nconst getColumns = memoize((columns, children) => columns || normalizeColumns(children));\n\nconst getContainerStyle = (width, maxWidth, height) => ({\n width,\n maxWidth,\n height,\n overflow: 'hidden',\n});\n\nconst DEFAULT_COMPONENTS = {\n TableCell,\n TableHeaderCell,\n ExpandIcon,\n SortIndicator,\n};\n\nconst RESIZE_THROTTLE_WAIT = 50;\n\n// used for memoization\nconst EMPTY_ARRAY = [];\n\n/**\n * React table component\n */\nclass BaseTable extends React.PureComponent {\n constructor(props) {\n super(props);\n\n const { columns, children, defaultExpandedRowKeys } = props;\n this.state = {\n scrollbarSize: 0,\n hoveredRowKey: null,\n resizingKey: null,\n resizingWidth: 0,\n expandedRowKeys: cloneArray(defaultExpandedRowKeys),\n };\n this.columnManager = new ColumnManager(getColumns(columns, children), props.fixed);\n\n this._setContainerRef = this._setContainerRef.bind(this);\n this._setMainTableRef = this._setMainTableRef.bind(this);\n this._setLeftTableRef = this._setLeftTableRef.bind(this);\n this._setRightTableRef = this._setRightTableRef.bind(this);\n\n this.renderExpandIcon = this.renderExpandIcon.bind(this);\n this.renderRow = this.renderRow.bind(this);\n this.renderRowCell = this.renderRowCell.bind(this);\n this.renderHeader = this.renderHeader.bind(this);\n this.renderHeaderCell = this.renderHeaderCell.bind(this);\n\n this._handleScroll = this._handleScroll.bind(this);\n this._handleVerticalScroll = this._handleVerticalScroll.bind(this);\n this._handleRowsRendered = this._handleRowsRendered.bind(this);\n this._handleRowHover = this._handleRowHover.bind(this);\n this._handleRowExpand = this._handleRowExpand.bind(this);\n this._handleColumnResize = throttle(this._handleColumnResize.bind(this), RESIZE_THROTTLE_WAIT);\n this._handleColumnResizeStart = this._handleColumnResizeStart.bind(this);\n this._handleColumnResizeStop = this._handleColumnResizeStop.bind(this);\n this._handleColumnSort = this._handleColumnSort.bind(this);\n this._handleFrozenRowHeightChange = this._handleFrozenRowHeightChange.bind(this);\n this._handleRowHeightChange = this._handleRowHeightChange.bind(this);\n\n this._getLeftTableContainerStyle = memoize(getContainerStyle);\n this._getRightTableContainerStyle = memoize(getContainerStyle);\n this._flattenOnKeys = memoize((tree, keys, dataKey) => {\n this._depthMap = {};\n return flattenOnKeys(tree, keys, this._depthMap, dataKey);\n });\n this._resetColumnManager = memoize(\n (columns, fixed) => {\n this.columnManager.reset(columns, fixed);\n\n if (this.props.estimatedRowHeight && fixed) {\n if (!this.columnManager.hasLeftFrozenColumns()) {\n this._leftRowHeightMap = {};\n }\n if (!this.columnManager.hasRightFrozenColumns()) {\n this._rightRowHeightMap = {};\n }\n }\n },\n (newArgs, lastArgs) => isObjectEqual(newArgs, lastArgs, this.props.ignoreFunctionInColumnCompare)\n );\n\n this._isResetting = false;\n this._resetIndex = null;\n this._rowHeightMap = {};\n this._rowHeightMapBuffer = {};\n this._mainRowHeightMap = {};\n this._leftRowHeightMap = {};\n this._rightRowHeightMap = {};\n this._getEstimatedTotalRowsHeight = memoize(getEstimatedTotalRowsHeight);\n this._getRowHeight = this._getRowHeight.bind(this);\n this._updateRowHeights = debounce(() => {\n this._isResetting = true;\n this._rowHeightMap = { ...this._rowHeightMap, ...this._rowHeightMapBuffer };\n this.resetAfterRowIndex(this._resetIndex, false);\n this._rowHeightMapBuffer = {};\n this._resetIndex = null;\n this.forceUpdateTable();\n this.forceUpdate();\n this._isResetting = false;\n }, 0);\n\n this._scroll = { scrollLeft: 0, scrollTop: 0 };\n this._scrollHeight = 0;\n this._lastScannedRowIndex = -1;\n this._hasDataChangedSinceEndReached = true;\n\n this._data = props.data;\n this._depthMap = {};\n\n this._horizontalScrollbarSize = 0;\n this._verticalScrollbarSize = 0;\n this._scrollbarPresenceChanged = false;\n }\n\n /**\n * Get the DOM node of the table\n */\n getDOMNode() {\n return this.tableNode;\n }\n\n /**\n * Get the column manager\n */\n getColumnManager() {\n return this.columnManager;\n }\n\n /**\n * Get internal `expandedRowKeys` state\n */\n getExpandedRowKeys() {\n const { expandedRowKeys } = this.props;\n return expandedRowKeys !== undefined ? expandedRowKeys || EMPTY_ARRAY : this.state.expandedRowKeys;\n }\n\n /**\n * Get the expanded state, fallback to normal state if not expandable.\n */\n getExpandedState() {\n return {\n expandedData: this._data,\n expandedRowKeys: this.getExpandedRowKeys(),\n expandedDepthMap: this._depthMap,\n };\n }\n\n /**\n * Get the total height of all rows, including expanded rows.\n */\n getTotalRowsHeight() {\n const { rowHeight, estimatedRowHeight } = this.props;\n\n if (estimatedRowHeight) {\n return this.table\n ? this.table.getTotalRowsHeight()\n : this._getEstimatedTotalRowsHeight(this._data, estimatedRowHeight);\n }\n return this._data.length * rowHeight;\n }\n\n /**\n * Get the total width of all columns.\n */\n getTotalColumnsWidth() {\n return this.columnManager.getColumnsWidth();\n }\n\n /**\n * Forcefully re-render the inner Grid component.\n *\n * Calling `forceUpdate` on `Table` may not re-render the inner Grid since it uses `shallowCompare` as a performance optimization.\n * Use this method if you want to manually trigger a re-render.\n * This may be appropriate if the underlying row data has changed but the row sizes themselves have not.\n */\n forceUpdateTable() {\n this.table && this.table.forceUpdateTable();\n this.leftTable && this.leftTable.forceUpdateTable();\n this.rightTable && this.rightTable.forceUpdateTable();\n }\n\n /**\n * Reset cached offsets for positioning after a specific rowIndex, should be used only in dynamic mode(estimatedRowHeight is provided)\n *\n * @param {number} rowIndex\n * @param {boolean} shouldForceUpdate\n */\n resetAfterRowIndex(rowIndex = 0, shouldForceUpdate = true) {\n if (!this.props.estimatedRowHeight) return;\n\n this.table && this.table.resetAfterRowIndex(rowIndex, shouldForceUpdate);\n this.leftTable && this.leftTable.resetAfterRowIndex(rowIndex, shouldForceUpdate);\n this.rightTable && this.rightTable.resetAfterRowIndex(rowIndex, shouldForceUpdate);\n }\n\n /**\n * Reset row height cache, useful if `data` changed entirely, should be used only in dynamic mode(estimatedRowHeight is provided)\n */\n resetRowHeightCache() {\n if (!this.props.estimatedRowHeight) return;\n\n this._resetIndex = null;\n this._rowHeightMapBuffer = {};\n this._rowHeightMap = {};\n this._mainRowHeightMap = {};\n this._leftRowHeightMap = {};\n this._rightRowHeightMap = {};\n }\n\n /**\n * Scroll to the specified offset.\n * Useful for animating position changes.\n *\n * @param {object} offset\n */\n scrollToPosition(offset) {\n this._scroll = offset;\n\n this.table && this.table.scrollToPosition(offset);\n this.leftTable && this.leftTable.scrollToTop(offset.scrollTop);\n this.rightTable && this.rightTable.scrollToTop(offset.scrollTop);\n }\n\n /**\n * Scroll to the specified offset vertically.\n *\n * @param {number} scrollTop\n */\n scrollToTop(scrollTop) {\n this._scroll.scrollTop = scrollTop;\n\n this.table && this.table.scrollToPosition(this._scroll);\n this.leftTable && this.leftTable.scrollToTop(scrollTop);\n this.rightTable && this.rightTable.scrollToTop(scrollTop);\n }\n\n /**\n * Scroll to the specified offset horizontally.\n *\n * @param {number} scrollLeft\n */\n scrollToLeft(scrollLeft) {\n this._scroll.scrollLeft = scrollLeft;\n\n this.table && this.table.scrollToPosition(this._scroll);\n }\n\n /**\n * Scroll to the specified row.\n * By default, the table will scroll as little as possible to ensure the row is visible.\n * You can control the alignment of the row though by specifying an align property. Acceptable values are:\n *\n * - `auto` (default) - Scroll as little as possible to ensure the row is visible.\n * - `smart` - Same as `auto` if it is less than one viewport away, or it's the same as`center`.\n * - `center` - Center align the row within the table.\n * - `end` - Align the row to the bottom side of the table.\n * - `start` - Align the row to the top side of the table.\n *\n * @param {number} rowIndex\n * @param {string} align\n */\n scrollToRow(rowIndex = 0, align = 'auto') {\n this.table && this.table.scrollToRow(rowIndex, align);\n this.leftTable && this.leftTable.scrollToRow(rowIndex, align);\n this.rightTable && this.rightTable.scrollToRow(rowIndex, align);\n }\n\n /**\n * Set `expandedRowKeys` manually.\n * This method is available only if `expandedRowKeys` is uncontrolled.\n *\n * @param {array} expandedRowKeys\n */\n setExpandedRowKeys(expandedRowKeys) {\n // if `expandedRowKeys` is controlled\n if (this.props.expandedRowKeys !== undefined) return;\n\n this.setState({\n expandedRowKeys: cloneArray(expandedRowKeys),\n });\n }\n\n renderExpandIcon({ rowData, rowIndex, depth, onExpand }) {\n const { rowKey, expandColumnKey, expandIconProps } = this.props;\n if (!expandColumnKey) return null;\n\n const expandable = rowIndex >= 0 && hasChildren(rowData);\n const expanded = rowIndex >= 0 && this.getExpandedRowKeys().indexOf(rowData[rowKey]) >= 0;\n const extraProps = callOrReturn(expandIconProps, { rowData, rowIndex, depth, expandable, expanded });\n const ExpandIcon = this._getComponent('ExpandIcon');\n\n return ;\n }\n\n renderRow({ isScrolling, columns, rowData, rowIndex, style }) {\n const { rowClassName, rowRenderer, rowEventHandlers, expandColumnKey, estimatedRowHeight } = this.props;\n\n const rowClass = callOrReturn(rowClassName, { columns, rowData, rowIndex });\n const extraProps = callOrReturn(this.props.rowProps, { columns, rowData, rowIndex });\n const rowKey = rowData[this.props.rowKey];\n const depth = this._depthMap[rowKey] || 0;\n\n const className = cn(this._prefixClass('row'), rowClass, {\n [this._prefixClass(`row--depth-${depth}`)]: !!expandColumnKey && rowIndex >= 0,\n [this._prefixClass('row--expanded')]: !!expandColumnKey && this.getExpandedRowKeys().indexOf(rowKey) >= 0,\n [this._prefixClass('row--hovered')]: !isScrolling && rowKey === this.state.hoveredRowKey,\n [this._prefixClass('row--frozen')]: depth === 0 && rowIndex < 0,\n [this._prefixClass('row--customized')]: rowRenderer,\n });\n\n const hasFrozenColumns = this.columnManager.hasFrozenColumns();\n const rowProps = {\n ...extraProps,\n role: 'row',\n key: `row-${rowKey}`,\n isScrolling,\n className,\n style,\n columns,\n rowIndex,\n rowData,\n rowKey,\n expandColumnKey,\n depth,\n rowEventHandlers,\n rowRenderer,\n // for frozen rows we use fixed rowHeight\n estimatedRowHeight: rowIndex >= 0 ? estimatedRowHeight : undefined,\n getIsResetting: this._getIsResetting,\n cellRenderer: this.renderRowCell,\n expandIconRenderer: this.renderExpandIcon,\n onRowExpand: this._handleRowExpand,\n // for fixed table, we need to sync the hover state across the inner tables\n onRowHover: hasFrozenColumns ? this._handleRowHover : null,\n onRowHeightChange: hasFrozenColumns ? this._handleFrozenRowHeightChange : this._handleRowHeightChange,\n };\n\n return ;\n }\n\n renderRowCell({ isScrolling, columns, column, columnIndex, rowData, rowIndex, expandIcon }) {\n if (column[ColumnManager.PlaceholderKey]) {\n return (\n \n );\n }\n\n const { className, dataKey, dataGetter, cellRenderer } = column;\n const TableCell = this._getComponent('TableCell');\n\n const cellData = dataGetter\n ? dataGetter({ columns, column, columnIndex, rowData, rowIndex })\n : getValue(rowData, dataKey);\n const cellProps = { isScrolling, cellData, columns, column, columnIndex, rowData, rowIndex, container: this };\n const cell = renderElement(cellRenderer || , cellProps);\n\n const cellCls = callOrReturn(className, { cellData, columns, column, columnIndex, rowData, rowIndex });\n const cls = cn(this._prefixClass('row-cell'), cellCls, {\n [this._prefixClass('row-cell--align-center')]: column.align === Alignment.CENTER,\n [this._prefixClass('row-cell--align-right')]: column.align === Alignment.RIGHT,\n });\n\n const extraProps = callOrReturn(this.props.cellProps, { columns, column, columnIndex, rowData, rowIndex });\n const { tagName, ...rest } = extraProps || {};\n const Tag = tagName || 'div';\n return (\n \n {expandIcon}\n {cell}\n \n );\n }\n\n renderHeader({ columns, headerIndex, style }) {\n const { headerClassName, headerRenderer } = this.props;\n\n const headerClass = callOrReturn(headerClassName, { columns, headerIndex });\n const extraProps = callOrReturn(this.props.headerProps, { columns, headerIndex });\n\n const className = cn(this._prefixClass('header-row'), headerClass, {\n [this._prefixClass('header-row--resizing')]: !!this.state.resizingKey,\n [this._prefixClass('header-row--customized')]: headerRenderer,\n });\n\n const headerProps = {\n ...extraProps,\n role: 'row',\n key: `header-${headerIndex}`,\n className,\n style,\n columns,\n headerIndex,\n headerRenderer,\n cellRenderer: this.renderHeaderCell,\n expandColumnKey: this.props.expandColumnKey,\n expandIcon: this._getComponent('ExpandIcon'),\n };\n\n return ;\n }\n\n renderHeaderCell({ columns, column, columnIndex, headerIndex, expandIcon }) {\n if (column[ColumnManager.PlaceholderKey]) {\n return (\n \n );\n }\n\n const { headerClassName, headerRenderer } = column;\n const { sortBy, sortState, headerCellProps } = this.props;\n const TableHeaderCell = this._getComponent('TableHeaderCell');\n const SortIndicator = this._getComponent('SortIndicator');\n\n const cellProps = { columns, column, columnIndex, headerIndex, container: this };\n const cell = renderElement(\n headerRenderer || ,\n cellProps\n );\n\n let sorting, sortOrder;\n\n if (sortState) {\n const order = sortState[column.key];\n sorting = order === SortOrder.ASC || order === SortOrder.DESC;\n sortOrder = sorting ? order : SortOrder.ASC;\n } else {\n sorting = column.key === sortBy.key;\n sortOrder = sorting ? sortBy.order : SortOrder.ASC;\n }\n\n const cellCls = callOrReturn(headerClassName, { columns, column, columnIndex, headerIndex });\n const cls = cn(this._prefixClass('header-cell'), cellCls, {\n [this._prefixClass('header-cell--align-center')]: column.align === Alignment.CENTER,\n [this._prefixClass('header-cell--align-right')]: column.align === Alignment.RIGHT,\n [this._prefixClass('header-cell--sortable')]: column.sortable,\n [this._prefixClass('header-cell--sorting')]: sorting,\n [this._prefixClass('header-cell--resizing')]: column.key === this.state.resizingKey,\n });\n const extraProps = callOrReturn(headerCellProps, { columns, column, columnIndex, headerIndex });\n const { tagName, ...rest } = extraProps || {};\n const Tag = tagName || 'div';\n return (\n \n {expandIcon}\n {cell}\n {column.sortable && (\n \n )}\n {column.resizable && (\n \n )}\n \n );\n }\n\n renderMainTable() {\n const { width, headerHeight, rowHeight, fixed, estimatedRowHeight, ...rest } = this.props;\n const height = this._getTableHeight();\n\n let tableWidth = width - this._verticalScrollbarSize;\n if (fixed) {\n const columnsWidth = this.columnManager.getColumnsWidth();\n // make sure `scrollLeft` is always integer to fix a sync bug when scrolling to end horizontally\n tableWidth = Math.max(Math.round(columnsWidth), tableWidth);\n }\n return (\n \n );\n }\n\n renderLeftTable() {\n if (!this.columnManager.hasLeftFrozenColumns()) return null;\n\n const { width, headerHeight, rowHeight, estimatedRowHeight, ...rest } = this.props;\n\n const containerHeight = this._getFrozenContainerHeight();\n const offset = this._verticalScrollbarSize || 20;\n const columnsWidth = this.columnManager.getLeftFrozenColumnsWidth();\n return (\n \n );\n }\n\n renderRightTable() {\n if (!this.columnManager.hasRightFrozenColumns()) return null;\n\n const { width, headerHeight, rowHeight, estimatedRowHeight, ...rest } = this.props;\n\n const containerHeight = this._getFrozenContainerHeight();\n const columnsWidth = this.columnManager.getRightFrozenColumnsWidth();\n const scrollbarWidth = this._verticalScrollbarSize;\n return (\n \n );\n }\n\n renderResizingLine() {\n const { width, fixed } = this.props;\n const { resizingKey } = this.state;\n if (!fixed || !resizingKey) return null;\n\n const columns = this.columnManager.getMainColumns();\n const idx = columns.findIndex(column => column.key === resizingKey);\n const column = columns[idx];\n const { width: columnWidth, frozen } = column;\n const leftWidth = this.columnManager.recomputeColumnsWidth(columns.slice(0, idx));\n\n let left = leftWidth + columnWidth;\n if (!frozen) {\n left -= this._scroll.scrollLeft;\n } else if (frozen === FrozenDirection.RIGHT) {\n const rightWidth = this.columnManager.recomputeColumnsWidth(columns.slice(idx + 1));\n if (rightWidth + columnWidth > width - this._verticalScrollbarSize) {\n left = columnWidth;\n } else {\n left = width - this._verticalScrollbarSize - rightWidth;\n }\n }\n const style = {\n left,\n height: this._getTableHeight() - this._horizontalScrollbarSize,\n };\n return
;\n }\n\n renderFooter() {\n const { footerHeight, footerRenderer } = this.props;\n if (footerHeight === 0) return null;\n return (\n
\n {renderElement(footerRenderer)}\n
\n );\n }\n\n renderEmptyLayer() {\n const { data, frozenData, footerHeight, emptyRenderer } = this.props;\n\n if ((data && data.length) || (frozenData && frozenData.length)) return null;\n const headerHeight = this._getHeaderHeight();\n return (\n
\n {renderElement(emptyRenderer)}\n
\n );\n }\n\n renderOverlay() {\n const { overlayRenderer } = this.props;\n\n return
{!!overlayRenderer && renderElement(overlayRenderer)}
;\n }\n\n render() {\n const {\n columns,\n children,\n width,\n fixed,\n data,\n frozenData,\n expandColumnKey,\n disabled,\n className,\n style,\n footerHeight,\n classPrefix,\n estimatedRowHeight,\n } = this.props;\n this._resetColumnManager(getColumns(columns, children), fixed);\n\n const _data = expandColumnKey ? this._flattenOnKeys(data, this.getExpandedRowKeys(), this.props.rowKey) : data;\n if (this._data !== _data) {\n this.resetAfterRowIndex(0, false);\n this._data = _data;\n }\n // should be after `this._data` assigned\n this._calcScrollbarSizes();\n this._totalRowsHeight = this.getTotalRowsHeight();\n\n const containerStyle = {\n ...style,\n width,\n height: this._getTableHeight() + footerHeight,\n position: 'relative',\n };\n const cls = cn(classPrefix, className, {\n [`${classPrefix}--fixed`]: fixed,\n [`${classPrefix}--expandable`]: !!expandColumnKey,\n [`${classPrefix}--empty`]: data.length === 0,\n [`${classPrefix}--has-frozen-rows`]: frozenData.length > 0,\n [`${classPrefix}--has-frozen-columns`]: this.columnManager.hasFrozenColumns(),\n [`${classPrefix}--disabled`]: disabled,\n [`${classPrefix}--dynamic`]: !!estimatedRowHeight,\n });\n return (\n
\n {this.renderFooter()}\n {this.renderMainTable()}\n {this.renderLeftTable()}\n {this.renderRightTable()}\n {this.renderResizingLine()}\n {this.renderEmptyLayer()}\n {this.renderOverlay()}\n
\n );\n }\n\n componentDidMount() {\n const scrollbarSize = this.props.getScrollbarSize();\n if (scrollbarSize > 0) {\n this.setState({ scrollbarSize });\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { data, height, maxHeight, estimatedRowHeight } = this.props;\n if (data !== prevProps.data) {\n this._lastScannedRowIndex = -1;\n this._hasDataChangedSinceEndReached = true;\n }\n\n if (maxHeight !== prevProps.maxHeight || height !== prevProps.height) {\n this._maybeCallOnEndReached();\n }\n this._maybeScrollbarPresenceChange();\n\n if (estimatedRowHeight) {\n if (this.getTotalRowsHeight() !== this._totalRowsHeight) {\n this.forceUpdate();\n }\n }\n }\n\n _prefixClass(className) {\n return `${this.props.classPrefix}__${className}`;\n }\n\n _setContainerRef(ref) {\n this.tableNode = ref;\n }\n\n _setMainTableRef(ref) {\n this.table = ref;\n }\n\n _setLeftTableRef(ref) {\n this.leftTable = ref;\n }\n\n _setRightTableRef(ref) {\n this.rightTable = ref;\n }\n\n _getComponent(name) {\n if (this.props.components && this.props.components[name]) return this.props.components[name];\n return DEFAULT_COMPONENTS[name];\n }\n\n // for dynamic row height\n _getRowHeight(rowIndex) {\n const { estimatedRowHeight, rowKey } = this.props;\n return (\n this._rowHeightMap[this._data[rowIndex][rowKey]] ||\n callOrReturn(estimatedRowHeight, { rowData: this._data[rowIndex], rowIndex })\n );\n }\n\n _getIsResetting() {\n return this._isResetting;\n }\n\n _getHeaderHeight() {\n const { headerHeight } = this.props;\n if (Array.isArray(headerHeight)) {\n return headerHeight.reduce((sum, height) => sum + height, 0);\n }\n return headerHeight;\n }\n\n _getFrozenRowsHeight() {\n const { frozenData, rowHeight } = this.props;\n return frozenData.length * rowHeight;\n }\n\n _getTableHeight() {\n const { height, maxHeight, footerHeight } = this.props;\n let tableHeight = height - footerHeight;\n\n if (maxHeight > 0) {\n const frozenRowsHeight = this._getFrozenRowsHeight();\n const totalRowsHeight = this.getTotalRowsHeight();\n const headerHeight = this._getHeaderHeight();\n const totalHeight = headerHeight + frozenRowsHeight + totalRowsHeight + this._horizontalScrollbarSize;\n tableHeight = Math.min(totalHeight, maxHeight - footerHeight);\n }\n\n return tableHeight;\n }\n\n _getBodyHeight() {\n return this._getTableHeight() - this._getHeaderHeight() - this._getFrozenRowsHeight();\n }\n\n _getFrozenContainerHeight() {\n const { maxHeight } = this.props;\n\n const tableHeight = this._getTableHeight() - (this._data.length > 0 ? this._horizontalScrollbarSize : 0);\n // in auto height mode tableHeight = totalHeight\n if (maxHeight > 0) return tableHeight;\n\n const totalHeight = this.getTotalRowsHeight() + this._getHeaderHeight() + this._getFrozenRowsHeight();\n return Math.min(tableHeight, totalHeight);\n }\n\n _calcScrollbarSizes() {\n const { fixed, width } = this.props;\n const { scrollbarSize } = this.state;\n\n const totalRowsHeight = this.getTotalRowsHeight();\n const totalColumnsWidth = this.getTotalColumnsWidth();\n\n const prevHorizontalScrollbarSize = this._horizontalScrollbarSize;\n const prevVerticalScrollbarSize = this._verticalScrollbarSize;\n\n if (scrollbarSize === 0) {\n this._horizontalScrollbarSize = 0;\n this._verticalScrollbarSize = 0;\n } else {\n // we have to set `this._horizontalScrollbarSize` before calling `this._getBodyHeight`\n if (!fixed || totalColumnsWidth <= width - scrollbarSize) {\n this._horizontalScrollbarSize = 0;\n this._verticalScrollbarSize = totalRowsHeight > this._getBodyHeight() ? scrollbarSize : 0;\n } else {\n if (totalColumnsWidth > width) {\n this._horizontalScrollbarSize = scrollbarSize;\n this._verticalScrollbarSize =\n totalRowsHeight > this._getBodyHeight() - this._horizontalScrollbarSize ? scrollbarSize : 0;\n } else {\n this._horizontalScrollbarSize = 0;\n this._verticalScrollbarSize = 0;\n if (totalRowsHeight > this._getBodyHeight()) {\n this._horizontalScrollbarSize = scrollbarSize;\n this._verticalScrollbarSize = scrollbarSize;\n }\n }\n }\n }\n\n if (\n prevHorizontalScrollbarSize !== this._horizontalScrollbarSize ||\n prevVerticalScrollbarSize !== this._verticalScrollbarSize\n ) {\n this._scrollbarPresenceChanged = true;\n }\n }\n\n _maybeScrollbarPresenceChange() {\n if (this._scrollbarPresenceChanged) {\n const { onScrollbarPresenceChange } = this.props;\n this._scrollbarPresenceChanged = false;\n\n onScrollbarPresenceChange({\n size: this.state.scrollbarSize,\n horizontal: this._horizontalScrollbarSize > 0,\n vertical: this._verticalScrollbarSize > 0,\n });\n }\n }\n\n _maybeCallOnEndReached() {\n const { onEndReached, onEndReachedThreshold } = this.props;\n const { scrollTop } = this._scroll;\n const scrollHeight = this.getTotalRowsHeight();\n const clientHeight = this._getBodyHeight();\n\n if (!onEndReached || !clientHeight || !scrollHeight) return;\n const distanceFromEnd = scrollHeight - scrollTop - clientHeight + this._horizontalScrollbarSize;\n if (\n this._lastScannedRowIndex >= 0 &&\n distanceFromEnd <= onEndReachedThreshold &&\n (this._hasDataChangedSinceEndReached || scrollHeight !== this._scrollHeight)\n ) {\n this._hasDataChangedSinceEndReached = false;\n this._scrollHeight = scrollHeight;\n onEndReached({ distanceFromEnd });\n }\n }\n\n _handleScroll(args) {\n const lastScrollTop = this._scroll.scrollTop;\n this.scrollToPosition(args);\n this.props.onScroll(args);\n\n if (args.scrollTop > lastScrollTop) this._maybeCallOnEndReached();\n }\n\n _handleVerticalScroll({ scrollTop }) {\n const lastScrollTop = this._scroll.scrollTop;\n\n if (scrollTop !== lastScrollTop) this.scrollToTop(scrollTop);\n if (scrollTop > lastScrollTop) this._maybeCallOnEndReached();\n }\n\n _handleRowsRendered(args) {\n this.props.onRowsRendered(args);\n\n if (args.overscanStopIndex > this._lastScannedRowIndex) {\n this._lastScannedRowIndex = args.overscanStopIndex;\n this._maybeCallOnEndReached();\n }\n }\n\n _handleRowHover({ hovered, rowKey }) {\n this.setState({ hoveredRowKey: hovered ? rowKey : null });\n }\n\n _handleRowExpand({ expanded, rowData, rowIndex, rowKey }) {\n const expandedRowKeys = cloneArray(this.getExpandedRowKeys());\n if (expanded) {\n if (!expandedRowKeys.indexOf(rowKey) >= 0) expandedRowKeys.push(rowKey);\n } else {\n const index = expandedRowKeys.indexOf(rowKey);\n if (index > -1) {\n expandedRowKeys.splice(index, 1);\n }\n }\n // if `expandedRowKeys` is uncontrolled, update internal state\n if (this.props.expandedRowKeys === undefined) {\n this.setState({ expandedRowKeys });\n }\n this.props.onRowExpand({ expanded, rowData, rowIndex, rowKey });\n this.props.onExpandedRowsChange(expandedRowKeys);\n }\n\n _handleColumnResize({ key }, width) {\n this.columnManager.setColumnWidth(key, width);\n this.setState({ resizingWidth: width });\n\n const column = this.columnManager.getColumn(key);\n this.props.onColumnResize({ column, width });\n }\n\n _handleColumnResizeStart({ key }) {\n this.setState({ resizingKey: key });\n }\n\n _handleColumnResizeStop() {\n const { resizingKey, resizingWidth } = this.state;\n this.setState({ resizingKey: null, resizingWidth: 0 });\n\n if (!resizingKey || !resizingWidth) return;\n\n const column = this.columnManager.getColumn(resizingKey);\n this.props.onColumnResizeEnd({ column, width: resizingWidth });\n }\n\n _handleColumnSort(event) {\n const key = event.currentTarget.dataset.key;\n const { sortBy, sortState, onColumnSort } = this.props;\n let order = SortOrder.ASC;\n\n if (sortState) {\n order = sortState[key] === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC;\n } else if (key === sortBy.key) {\n order = sortBy.order === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC;\n }\n\n const column = this.columnManager.getColumn(key);\n onColumnSort({ column, key, order });\n }\n\n _handleFrozenRowHeightChange(rowKey, size, rowIndex, frozen) {\n if (!frozen) {\n this._mainRowHeightMap[rowKey] = size;\n } else if (frozen === FrozenDirection.RIGHT) {\n this._rightRowHeightMap[rowKey] = size;\n } else {\n this._leftRowHeightMap[rowKey] = size;\n }\n\n const height = Math.max(\n this._mainRowHeightMap[rowKey] || 0,\n this._leftRowHeightMap[rowKey] || 0,\n this._rightRowHeightMap[rowKey] || 0\n );\n\n if (this._rowHeightMap[rowKey] !== height) {\n this._handleRowHeightChange(rowKey, height, rowIndex);\n }\n }\n\n _handleRowHeightChange(rowKey, size, rowIndex) {\n if (this._resetIndex === null) this._resetIndex = rowIndex;\n else if (this._resetIndex > rowIndex) this._resetIndex = rowIndex;\n\n this._rowHeightMapBuffer[rowKey] = size;\n this._updateRowHeights();\n }\n}\n\nBaseTable.Column = Column;\nBaseTable.PlaceholderKey = ColumnManager.PlaceholderKey;\n\nBaseTable.defaultProps = {\n classPrefix: 'BaseTable',\n rowKey: 'id',\n data: [],\n frozenData: [],\n fixed: false,\n headerHeight: 50,\n rowHeight: 50,\n footerHeight: 0,\n defaultExpandedRowKeys: [],\n sortBy: {},\n useIsScrolling: false,\n overscanRowCount: 1,\n onEndReachedThreshold: 500,\n getScrollbarSize: defaultGetScrollbarSize,\n ignoreFunctionInColumnCompare: true,\n\n onScroll: noop,\n onRowsRendered: noop,\n onScrollbarPresenceChange: noop,\n onRowExpand: noop,\n onExpandedRowsChange: noop,\n onColumnSort: noop,\n onColumnResize: noop,\n onColumnResizeEnd: noop,\n};\n\nBaseTable.propTypes = {\n /**\n * Prefix for table's inner className\n */\n classPrefix: PropTypes.string,\n /**\n * Class name for the table\n */\n className: PropTypes.string,\n /**\n * Custom style for the table\n */\n style: PropTypes.object,\n /**\n * A collection of Column\n */\n children: PropTypes.node,\n /**\n * Columns for the table\n */\n columns: PropTypes.arrayOf(PropTypes.shape(Column.propTypes)),\n /**\n * The data for the table\n */\n data: PropTypes.array.isRequired,\n /**\n * The data be frozen to top, `rowIndex` is negative and started from `-1`\n */\n frozenData: PropTypes.array,\n /**\n * The key field of each data item\n */\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n /**\n * The width of the table\n */\n width: PropTypes.number.isRequired,\n /**\n * The height of the table, will be ignored if `maxHeight` is set\n */\n height: PropTypes.number,\n /**\n * The max height of the table, the table's height will auto change when data changes,\n * will turns to vertical scroll if reaches the max height\n */\n maxHeight: PropTypes.number,\n /**\n * The height of each table row, will be only used by frozen rows if `estimatedRowHeight` is set\n */\n rowHeight: PropTypes.number,\n /**\n * Estimated row height, the real height will be measure dynamically according to the content\n * The callback is of the shape of `({ rowData, rowIndex }) => number`\n */\n estimatedRowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n /**\n * The height of the table header, set to 0 to hide the header, could be an array to render multi headers.\n */\n headerHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]).isRequired,\n /**\n * The height of the table footer\n */\n footerHeight: PropTypes.number,\n /**\n * Whether the width of the columns are fixed or flexible\n */\n fixed: PropTypes.bool,\n /**\n * Whether the table is disabled\n */\n disabled: PropTypes.bool,\n /**\n * Custom renderer on top of the table component\n */\n overlayRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n /**\n * Custom renderer when the length of data is 0\n */\n emptyRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n /**\n * Custom footer renderer, available only if `footerHeight` is larger then 0\n */\n footerRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n /**\n * Custom header renderer\n * The renderer receives props `{ cells, columns, headerIndex }`\n */\n headerRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n /**\n * Custom row renderer\n * The renderer receives props `{ isScrolling, cells, columns, rowData, rowIndex, depth }`\n */\n rowRenderer: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n /**\n * Class name for the table header, could be a callback to return the class name\n * The callback is of the shape of `({ columns, headerIndex }) => string`\n */\n headerClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * Class name for the table row, could be a callback to return the class name\n * The callback is of the shape of `({ columns, rowData, rowIndex }) => string`\n */\n rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /**\n * Extra props applied to header element\n * The handler is of the shape of `({ columns, headerIndex }) object`\n */\n headerProps: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n /**\n * Extra props applied to header cell element\n * The handler is of the shape of `({ columns, column, columnIndex, headerIndex }) => object`\n */\n headerCellProps: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n /**\n * Extra props applied to row element\n * The handler is of the shape of `({ columns, rowData, rowIndex }) => object`\n */\n rowProps: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n /**\n * Extra props applied to row cell element\n * The handler is of the shape of `({ columns, column, columnIndex, rowData, rowIndex }) => object`\n */\n cellProps: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n /**\n * Extra props applied to ExpandIcon component\n * The handler is of the shape of `({ rowData, rowIndex, depth, expandable, expanded }) => object`\n */\n expandIconProps: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n /**\n * The key for the expand column which render the expand icon if the data is a tree\n */\n expandColumnKey: PropTypes.string,\n /**\n * Default expanded row keys when initialize the table\n */\n defaultExpandedRowKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n /**\n * Controlled expanded row keys\n */\n expandedRowKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n /**\n * A callback function when expand or collapse a tree node\n * The handler is of the shape of `({ expanded, rowData, rowIndex, rowKey }) => *`\n */\n onRowExpand: PropTypes.func,\n /**\n * A callback function when the expanded row keys changed\n * The handler is of the shape of `(expandedRowKeys) => *`\n */\n onExpandedRowsChange: PropTypes.func,\n /**\n * The sort state for the table, will be ignored if `sortState` is set\n */\n sortBy: PropTypes.shape({\n /**\n * Sort key\n */\n key: PropTypes.string,\n /**\n * Sort order\n */\n order: PropTypes.oneOf([SortOrder.ASC, SortOrder.DESC]),\n }),\n /**\n * Multiple columns sort state for the table\n *\n * example:\n * ```js\n * {\n * 'column-0': SortOrder.ASC,\n * 'column-1': SortOrder.DESC,\n * }\n * ```\n */\n sortState: PropTypes.object,\n /**\n * A callback function for the header cell click event\n * The handler is of the shape of `({ column, key, order }) => *`\n */\n onColumnSort: PropTypes.func,\n /**\n * A callback function when resizing the column width\n * The handler is of the shape of `({ column, width }) => *`\n */\n onColumnResize: PropTypes.func,\n /**\n * A callback function when resizing the column width ends\n * The handler is of the shape of `({ column, width }) => *`\n */\n onColumnResizeEnd: PropTypes.func,\n /**\n * Adds an additional isScrolling parameter to the row renderer.\n * This parameter can be used to show a placeholder row while scrolling.\n */\n useIsScrolling: PropTypes.bool,\n /**\n * Number of rows to render above/below the visible bounds of the list\n */\n overscanRowCount: PropTypes.number,\n /**\n * Custom scrollbar size measurement\n */\n getScrollbarSize: PropTypes.func,\n /**\n * A callback function when scrolling the table\n * The handler is of the shape of `({ scrollLeft, scrollTop, horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested }) => *`\n *\n * `scrollLeft` and `scrollTop` are numbers.\n *\n * `horizontalDirection` and `verticalDirection` are either `forward` or `backward`.\n *\n * `scrollUpdateWasRequested` is a boolean. This value is true if the scroll was caused by `scrollTo*`,\n * and false if it was the result of a user interaction in the browser.\n */\n onScroll: PropTypes.func,\n /**\n * A callback function when scrolling the table within `onEndReachedThreshold` of the bottom\n * The handler is of the shape of `({ distanceFromEnd }) => *`\n */\n onEndReached: PropTypes.func,\n /**\n * Threshold in pixels for calling `onEndReached`.\n */\n onEndReachedThreshold: PropTypes.number,\n /**\n * A callback function with information about the slice of rows that were just rendered\n * The handler is of the shape of `({ overscanStartIndex, overscanStopIndex, startIndex, stopIndex }) => *`\n */\n onRowsRendered: PropTypes.func,\n /**\n * A callback function when the scrollbar presence state changed\n * The handler is of the shape of `({ size, vertical, horizontal }) => *`\n */\n onScrollbarPresenceChange: PropTypes.func,\n /**\n * A object for the row event handlers\n * Each of the keys is row event name, like `onClick`, `onDoubleClick` and etc.\n * Each of the handlers is of the shape of `({ rowData, rowIndex, rowKey, event }) => *`\n */\n rowEventHandlers: PropTypes.object,\n /**\n * whether to ignore function properties while comparing column definition\n */\n ignoreFunctionInColumnCompare: PropTypes.bool,\n /**\n * A object for the custom components, like `ExpandIcon` and `SortIndicator`\n */\n components: PropTypes.shape({\n TableCell: PropTypes.func,\n TableHeaderCell: PropTypes.func,\n ExpandIcon: PropTypes.func,\n SortIndicator: PropTypes.func,\n }),\n};\n\nexport default BaseTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\n/**\n * Decorator component that automatically adjusts the width and height of a single child\n */\nconst AutoResizer = ({ className, width, height, children, onResize }) => {\n const disableWidth = typeof width === 'number';\n const disableHeight = typeof height === 'number';\n\n if (disableWidth && disableHeight) {\n return (\n
\n {children({ width, height })}\n
\n );\n }\n\n return (\n \n {size =>\n children({\n width: disableWidth ? width : size.width,\n height: disableHeight ? height : size.height,\n })\n }\n \n );\n};\n\nAutoResizer.propTypes = {\n /**\n * Class name for the component\n */\n className: PropTypes.string,\n /**\n * the width of the component, will be the container's width if not set\n */\n width: PropTypes.number,\n /**\n * the height of the component, will be the container's width if not set\n */\n height: PropTypes.number,\n /**\n * A callback function to render the children component\n * The handler is of the shape of `({ width, height }) => node`\n */\n children: PropTypes.func.isRequired,\n /**\n * A callback function when the size of the table container changed if the width and height are not set\n * The handler is of the shape of `({ width, height }) => *`\n */\n onResize: PropTypes.func,\n};\n\nexport default AutoResizer;\n","'use strict';\n\nmodule.exports = argsArray;\n\nfunction argsArray(fun) {\n return function () {\n var len = arguments.length;\n if (len) {\n var args = [];\n var i = -1;\n while (++i < len) {\n args[i] = arguments[i];\n }\n return fun.call(this, args);\n } else {\n return fun.call(this, []);\n }\n };\n}","import { schemeCategory10, schemeAccent, schemeDark2, schemePaired, schemePastel1, schemePastel2, schemeSet1, schemeSet2, schemeSet3, schemeBrBG, schemePRGn, schemePiYG, schemePuOr, schemeRdBu, schemeRdGy, schemeRdYlBu, schemeRdYlGn, schemeSpectral, schemeBlues, schemeGreens, schemeGreys, schemeOranges, schemePurples, schemeReds, schemeBuGn, schemeBuPu, schemeGnBu, schemeOrRd, schemePuBuGn, schemePuBu, schemePuRd, schemeRdPu, schemeYlGnBu, schemeYlGn, schemeYlOrBr, schemeYlOrRd, interpolateBrBG, interpolatePRGn, interpolatePiYG, interpolatePuOr, interpolateRdBu, interpolateRdGy, interpolateRdYlBu, interpolateRdYlGn, interpolateSpectral, interpolateBlues, interpolateGreens, interpolateGreys, interpolateOranges, interpolatePurples, interpolateReds, interpolateViridis, interpolateInferno, interpolateMagma, interpolatePlasma, interpolateWarm, interpolateCool, interpolateCubehelixDefault, interpolateBuGn, interpolateBuPu, interpolateGnBu, interpolateOrRd, interpolatePuBuGn, interpolatePuBu, interpolatePuRd, interpolateRdPu, interpolateYlGnBu, interpolateYlGn, interpolateYlOrBr, interpolateYlOrRd, interpolateRainbow, interpolateSinebow } from 'd3-scale-chromatic';\nimport { useMemo } from 'react';\nimport get from 'lodash.get';\nimport isPlainObject from 'lodash.isplainobject';\nimport { scaleOrdinal } from 'd3-scale';\nimport { rgb } from 'd3-color';\nimport PropTypes from 'prop-types';\nimport { spring } from 'react-motion';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar categoricalColorSchemes = {\n nivo: ['#e8c1a0', '#f47560', '#f1e15b', '#e8a838', '#61cdbb', '#97e3d5'],\n category10: schemeCategory10,\n accent: schemeAccent,\n dark2: schemeDark2,\n paired: schemePaired,\n pastel1: schemePastel1,\n pastel2: schemePastel2,\n set1: schemeSet1,\n set2: schemeSet2,\n set3: schemeSet3\n};\nvar categoricalColorSchemeIds = Object.keys(categoricalColorSchemes);\nvar isCategoricalColorScheme = function isCategoricalColorScheme(scheme) {\n return categoricalColorSchemeIds.includes(scheme);\n};\nvar divergingColorSchemes = {\n brown_blueGreen: schemeBrBG,\n purpleRed_green: schemePRGn,\n pink_yellowGreen: schemePiYG,\n purple_orange: schemePuOr,\n red_blue: schemeRdBu,\n red_grey: schemeRdGy,\n red_yellow_blue: schemeRdYlBu,\n red_yellow_green: schemeRdYlGn,\n spectral: schemeSpectral\n};\nvar divergingColorSchemeIds = Object.keys(divergingColorSchemes);\nvar isDivergingColorScheme = function isDivergingColorScheme(scheme) {\n return divergingColorSchemeIds.includes(scheme);\n};\nvar sequentialColorSchemes = {\n blues: schemeBlues,\n greens: schemeGreens,\n greys: schemeGreys,\n oranges: schemeOranges,\n purples: schemePurples,\n reds: schemeReds,\n blue_green: schemeBuGn,\n blue_purple: schemeBuPu,\n green_blue: schemeGnBu,\n orange_red: schemeOrRd,\n purple_blue_green: schemePuBuGn,\n purple_blue: schemePuBu,\n purple_red: schemePuRd,\n red_purple: schemeRdPu,\n yellow_green_blue: schemeYlGnBu,\n yellow_green: schemeYlGn,\n yellow_orange_brown: schemeYlOrBr,\n yellow_orange_red: schemeYlOrRd\n};\nvar sequentialColorSchemeIds = Object.keys(sequentialColorSchemes);\nvar isSequentialColorScheme = function isSequentialColorScheme(scheme) {\n return sequentialColorSchemeIds.includes(scheme);\n};\nvar colorSchemes = _objectSpread({}, categoricalColorSchemes, divergingColorSchemes, sequentialColorSchemes);\nvar colorSchemeIds = Object.keys(colorSchemes);\nvar colorInterpolators = {\n brown_blueGreen: interpolateBrBG,\n purpleRed_green: interpolatePRGn,\n pink_yellowGreen: interpolatePiYG,\n purple_orange: interpolatePuOr,\n red_blue: interpolateRdBu,\n red_grey: interpolateRdGy,\n red_yellow_blue: interpolateRdYlBu,\n red_yellow_green: interpolateRdYlGn,\n spectral: interpolateSpectral,\n blues: interpolateBlues,\n greens: interpolateGreens,\n greys: interpolateGreys,\n oranges: interpolateOranges,\n purples: interpolatePurples,\n reds: interpolateReds,\n viridis: interpolateViridis,\n inferno: interpolateInferno,\n magma: interpolateMagma,\n plasma: interpolatePlasma,\n warm: interpolateWarm,\n cool: interpolateCool,\n cubehelixDefault: interpolateCubehelixDefault,\n blue_green: interpolateBuGn,\n blue_purple: interpolateBuPu,\n green_blue: interpolateGnBu,\n orange_red: interpolateOrRd,\n purple_blue_green: interpolatePuBuGn,\n purple_blue: interpolatePuBu,\n purple_red: interpolatePuRd,\n red_purple: interpolateRdPu,\n yellow_green_blue: interpolateYlGnBu,\n yellow_green: interpolateYlGn,\n yellow_orange_brown: interpolateYlOrBr,\n yellow_orange_red: interpolateYlOrRd,\n rainbow: interpolateRainbow,\n sinebow: interpolateSinebow\n};\nvar colorInterpolatorIds = Object.keys(colorInterpolators);\n\nvar getOrdinalColorScale = function getOrdinalColorScale(instruction, identity) {\n if (typeof instruction === 'function') return instruction;\n var getIdentity = typeof identity === 'function' ? identity : function (d) {\n return get(d, identity);\n };\n if (Array.isArray(instruction)) {\n var scale = scaleOrdinal(instruction);\n var generator = function generator(d) {\n return scale(getIdentity(d));\n };\n generator.scale = scale;\n return generator;\n }\n if (isPlainObject(instruction)) {\n if (instruction.datum !== undefined) {\n return function (datum) {\n return get(datum, instruction.datum);\n };\n }\n if (instruction.scheme !== undefined) {\n if (isCategoricalColorScheme(instruction.scheme)) {\n var _scale = scaleOrdinal(colorSchemes[instruction.scheme]);\n var _generator = function _generator(d) {\n return _scale(getIdentity(d));\n };\n _generator.scale = _scale;\n return _generator;\n }\n if (isDivergingColorScheme(instruction.scheme)) {\n if (instruction.size !== undefined && (instruction.size < 3 || instruction.size > 11)) {\n throw new Error(\"Invalid size '\".concat(instruction.size, \"' for diverging color scheme '\").concat(instruction.scheme, \"', must be between 3~11\"));\n }\n var _scale2 = scaleOrdinal(colorSchemes[instruction.scheme][instruction.size || 11]);\n var _generator2 = function _generator2(d) {\n return _scale2(getIdentity(d));\n };\n _generator2.scale = _scale2;\n return _generator2;\n }\n if (isSequentialColorScheme(instruction.scheme)) {\n if (instruction.size !== undefined && (instruction.size < 3 || instruction.size > 9)) {\n throw new Error(\"Invalid size '\".concat(instruction.size, \"' for sequential color scheme '\").concat(instruction.scheme, \"', must be between 3~9\"));\n }\n var _scale3 = scaleOrdinal(colorSchemes[instruction.scheme][instruction.size || 9]);\n var _generator3 = function _generator3(d) {\n return _scale3(getIdentity(d));\n };\n _generator3.scale = _scale3;\n return _generator3;\n }\n }\n throw new Error(\"Invalid colors, when using an object, you should either pass a 'datum' or a 'scheme' property\");\n }\n return function () {\n return instruction;\n };\n};\nvar useOrdinalColorScale = function useOrdinalColorScale(instruction, identity) {\n return useMemo(function () {\n return getOrdinalColorScale(instruction, identity);\n }, [instruction, identity]);\n};\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nvar getInheritedColorGenerator = function getInheritedColorGenerator(inheritedColor, theme) {\n if (typeof inheritedColor === 'function') return function (node) {\n return inheritedColor(node);\n };\n if (isPlainObject(inheritedColor)) {\n if (inheritedColor.theme !== undefined) {\n if (theme === undefined) {\n throw new Error(\"Unable to use color from theme as no theme was provided\");\n }\n var themeColor = get(theme, inheritedColor.theme);\n if (themeColor === undefined) {\n throw new Error(\"Color from theme is undefined at path: '\".concat(inheritedColor.theme, \"'\"));\n }\n return function () {\n return themeColor;\n };\n }\n if (inheritedColor.from !== undefined) {\n var getColor = function getColor(datum) {\n return get(datum, inheritedColor.from);\n };\n if (Array.isArray(inheritedColor.modifiers)) {\n var modifiers = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n try {\n var _loop = function _loop() {\n var modifier = _step.value;\n var _modifier = _slicedToArray(modifier, 2),\n modifierType = _modifier[0],\n amount = _modifier[1];\n if (modifierType === 'brighter') {\n modifiers.push(function (color) {\n return color.brighter(amount);\n });\n } else if (modifierType === 'darker') {\n modifiers.push(function (color) {\n return color.darker(amount);\n });\n } else if (modifierType === 'opacity') {\n modifiers.push(function (color) {\n color.opacity = amount;\n return color;\n });\n } else {\n throw new Error(\"Invalid color modifier: '\".concat(modifierType, \"', must be one of: 'brighter', 'darker', 'opacity'\"));\n }\n };\n for (var _iterator = inheritedColor.modifiers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (modifiers.length === 0) return getColor;\n return function (datum) {\n return modifiers.reduce(function (color, modify) {\n return modify(color);\n }, rgb(getColor(datum))).toString();\n };\n }\n return getColor;\n }\n throw new Error(\"Invalid color spec, you should either specify 'theme' or 'from' when using a config object\");\n }\n return function () {\n return inheritedColor;\n };\n};\nvar useInheritedColor = function useInheritedColor(parentColor, theme) {\n return useMemo(function () {\n return getInheritedColorGenerator(parentColor, theme);\n }, [parentColor, theme]);\n};\n\nvar ordinalColorsPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.arrayOf(PropTypes.string), PropTypes.shape({\n scheme: PropTypes.oneOf(colorSchemeIds).isRequired,\n size: PropTypes.number\n}), PropTypes.shape({\n datum: PropTypes.string.isRequired\n}), PropTypes.string]);\nvar colorPropertyAccessorPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\nvar inheritedColorPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n theme: PropTypes.string.isRequired\n}), PropTypes.shape({\n from: PropTypes.string.isRequired,\n modifiers: PropTypes.arrayOf(PropTypes.array)\n})]);\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; }\nfunction _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar interpolateColor = function interpolateColor(color, springConfig) {\n var colorComponents = rgb(color);\n if (!springConfig) {\n return {\n colorR: colorComponents.r,\n colorG: colorComponents.g,\n colorB: colorComponents.b\n };\n }\n var configWithPrecision = _objectSpread$1({}, springConfig, {\n precision: 1\n });\n return {\n colorR: spring(colorComponents.r, configWithPrecision),\n colorG: spring(colorComponents.g, configWithPrecision),\n colorB: spring(colorComponents.b, configWithPrecision)\n };\n};\nvar getInterpolatedColor = function getInterpolatedColor(_ref) {\n var colorR = _ref.colorR,\n colorG = _ref.colorG,\n colorB = _ref.colorB;\n return \"rgb(\".concat(Math.round(Math.max(colorR, 0)), \",\").concat(Math.round(Math.max(colorG, 0)), \",\").concat(Math.round(Math.max(colorB, 0)), \")\");\n};\n\nexport { categoricalColorSchemeIds, categoricalColorSchemes, colorInterpolatorIds, colorInterpolators, colorPropertyAccessorPropType, colorSchemeIds, colorSchemes, divergingColorSchemeIds, divergingColorSchemes, getInheritedColorGenerator, getInterpolatedColor, getOrdinalColorScale, inheritedColorPropType, interpolateColor, isCategoricalColorScheme, isDivergingColorScheme, isSequentialColorScheme, ordinalColorsPropType, sequentialColorSchemeIds, sequentialColorSchemes, useInheritedColor, useOrdinalColorScale };\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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _getDisplayName = _interopRequireDefault(require(\"./getDisplayName\"));\n\nvar wrapDisplayName = function wrapDisplayName(BaseComponent, hocName) {\n return hocName + \"(\" + (0, _getDisplayName.default)(BaseComponent) + \")\";\n};\n\nvar _default = wrapDisplayName;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _setStatic = _interopRequireDefault(require(\"./setStatic\"));\n\nvar setDisplayName = function setDisplayName(displayName) {\n return (0, _setStatic.default)('displayName', displayName);\n};\n\nvar _default = setDisplayName;\nexports.default = _default;","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = require(\"react\");\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar defaultProps = function defaultProps(props) {\n return function (BaseComponent) {\n var factory = (0, _react.createFactory)(BaseComponent);\n\n var DefaultProps = function DefaultProps(ownerProps) {\n return factory(ownerProps);\n };\n\n DefaultProps.defaultProps = props;\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'defaultProps'))(DefaultProps);\n }\n\n return DefaultProps;\n };\n};\n\nvar _default = defaultProps;\nexports.default = _default;","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\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 root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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 var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\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 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 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","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","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nvar types = ['client', 'offset', 'scroll', 'bounds', 'margin'];\nfunction getTypes(props) {\n var allowedTypes = [];\n types.forEach(function (type) {\n if (props[type]) {\n allowedTypes.push(type);\n }\n });\n return allowedTypes;\n}\n\nfunction getContentRect(node, types) {\n var calculations = {};\n\n if (types.indexOf('client') > -1) {\n calculations.client = {\n top: node.clientTop,\n left: node.clientLeft,\n width: node.clientWidth,\n height: node.clientHeight\n };\n }\n\n if (types.indexOf('offset') > -1) {\n calculations.offset = {\n top: node.offsetTop,\n left: node.offsetLeft,\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n }\n\n if (types.indexOf('scroll') > -1) {\n calculations.scroll = {\n top: node.scrollTop,\n left: node.scrollLeft,\n width: node.scrollWidth,\n height: node.scrollHeight\n };\n }\n\n if (types.indexOf('bounds') > -1) {\n var rect = node.getBoundingClientRect();\n calculations.bounds = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n\n if (types.indexOf('margin') > -1) {\n var styles = getComputedStyle(node);\n calculations.margin = {\n top: styles ? parseInt(styles.marginTop) : 0,\n right: styles ? parseInt(styles.marginRight) : 0,\n bottom: styles ? parseInt(styles.marginBottom) : 0,\n left: styles ? parseInt(styles.marginLeft) : 0\n };\n }\n\n return calculations;\n}\n\n/**\n * Returns the global window object associated with provided element.\n */\nfunction getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local window object if it's not possible extract one from\n // provided element.\n\n return ownerGlobal || window;\n}\n\nfunction withContentRect(types) {\n return function (WrappedComponent) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(WithContentRect, _Component);\n\n function WithContentRect() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n contentRect: {\n entry: {},\n client: {},\n offset: {},\n scroll: {},\n bounds: {},\n margin: {}\n }\n };\n _this._animationFrameID = null;\n _this._resizeObserver = null;\n _this._node = null;\n _this._window = null;\n\n _this.measure = function (entries) {\n var contentRect = getContentRect(_this._node, types || getTypes(_this.props));\n\n if (entries) {\n contentRect.entry = entries[0].contentRect;\n }\n\n _this._animationFrameID = _this._window.requestAnimationFrame(function () {\n if (_this._resizeObserver !== null) {\n _this.setState({\n contentRect: contentRect\n });\n\n if (typeof _this.props.onResize === 'function') {\n _this.props.onResize(contentRect);\n }\n }\n });\n };\n\n _this._handleRef = function (node) {\n if (_this._resizeObserver !== null && _this._node !== null) {\n _this._resizeObserver.unobserve(_this._node);\n }\n\n _this._node = node;\n _this._window = getWindowOf(_this._node);\n var innerRef = _this.props.innerRef;\n\n if (innerRef) {\n if (typeof innerRef === 'function') {\n innerRef(_this._node);\n } else {\n innerRef.current = _this._node;\n }\n }\n\n if (_this._resizeObserver !== null && _this._node !== null) {\n _this._resizeObserver.observe(_this._node);\n }\n };\n\n return _this;\n }\n\n var _proto = WithContentRect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._resizeObserver = this._window !== null && this._window.ResizeObserver ? new this._window.ResizeObserver(this.measure) : new ResizeObserver(this.measure);\n\n if (this._node !== null) {\n this._resizeObserver.observe(this._node);\n\n if (typeof this.props.onResize === 'function') {\n this.props.onResize(getContentRect(this._node, types || getTypes(this.props)));\n }\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._window !== null) {\n this._window.cancelAnimationFrame(this._animationFrameID);\n }\n\n if (this._resizeObserver !== null) {\n this._resizeObserver.disconnect();\n\n this._resizeObserver = null;\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n innerRef = _this$props.innerRef,\n onResize = _this$props.onResize,\n props = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"onResize\"]);\n\n return createElement(WrappedComponent, _extends({}, props, {\n measureRef: this._handleRef,\n measure: this.measure,\n contentRect: this.state.contentRect\n }));\n };\n\n return WithContentRect;\n }(Component), _class.propTypes = {\n client: PropTypes.bool,\n offset: PropTypes.bool,\n scroll: PropTypes.bool,\n bounds: PropTypes.bool,\n margin: PropTypes.bool,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n onResize: PropTypes.func\n }, _temp;\n };\n}\n\nvar Measure = withContentRect()(function (_ref) {\n var measure = _ref.measure,\n measureRef = _ref.measureRef,\n contentRect = _ref.contentRect,\n children = _ref.children;\n return children({\n measure: measure,\n measureRef: measureRef,\n contentRect: contentRect\n });\n});\nMeasure.displayName = 'Measure';\nMeasure.propTypes.children = PropTypes.func;\n\nexport default Measure;\nexport { withContentRect };\n","export default function _extends() {\n _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\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _setStatic = _interopRequireDefault(require(\"./setStatic\"));\n\nvar setPropTypes = function setPropTypes(propTypes) {\n return (0, _setStatic.default)('propTypes', propTypes);\n};\n\nvar _default = setPropTypes;\nexports.default = _default;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\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 match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\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\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/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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/** 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/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\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/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\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 * 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 ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\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}\n\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 return this.has(key) && delete this.__data__[key];\n}\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\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\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 data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\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\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 ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\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}\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 return true;\n}\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\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\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 data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\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\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 ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\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.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\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 return getMapData(this, key)['delete'](key);\n}\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\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\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 getMapData(this, key).set(key, value);\n return this;\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\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\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 = isKey(path, object) ? [path] : castPath(path);\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\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) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\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 (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\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 * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\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\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\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\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\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\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 = memoize(function(string) {\n string = toString(string);\n\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\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\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\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\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 `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 && 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);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\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\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\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 // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\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 && (type == 'object' || type == 'function');\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 == 'object';\n}\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) && objectToString.call(value) == symbolTag);\n}\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 process.\n * @returns {string} Returns the 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\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","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nexport default class Delaunator {\n\n static from(points, getX = defaultGetX, getY = defaultGetY) {\n const n = points.length;\n const coords = new Float64Array(n * 2);\n\n for (let i = 0; i < n; i++) {\n const p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n }\n\n constructor(coords) {\n const n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n const maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n }\n\n update() {\n const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} = this;\n const n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n for (let i = 0; i < n; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n this._ids[i] = i;\n }\n const cx = (minX + maxX) / 2;\n const cy = (minY + maxY) / 2;\n\n let minDist = Infinity;\n let i0, i1, i2;\n\n // pick a seed point close to the center\n for (let i = 0; i < n; i++) {\n const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist) {\n i0 = i;\n minDist = d;\n }\n }\n const i0x = coords[2 * i0];\n const i0y = coords[2 * i0 + 1];\n\n minDist = Infinity;\n\n // find the point closest to the seed\n for (let i = 0; i < n; i++) {\n if (i === i0) continue;\n const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n if (d < minDist && d > 0) {\n i1 = i;\n minDist = d;\n }\n }\n let i1x = coords[2 * i1];\n let i1y = coords[2 * i1 + 1];\n\n let minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (let i = 0; i < n; i++) {\n if (i === i0 || i === i1) continue;\n const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n if (r < minRadius) {\n i2 = i;\n minRadius = r;\n }\n }\n let i2x = coords[2 * i2];\n let i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (let i = 0; i < n; i++) {\n this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n const hull = new Uint32Array(n);\n let j = 0;\n for (let i = 0, d0 = -Infinity; i < n; i++) {\n const id = this._ids[i];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) {\n const i = i1;\n const x = i1x;\n const y = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i;\n i2x = x;\n i2y = y;\n }\n\n const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (let i = 0; i < n; i++) {\n this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n let hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (let k = 0, xp, yp; k < this._ids.length; k++) {\n const i = this._ids[k];\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n xp = x;\n yp = y;\n\n // skip seed triangle points\n if (i === i0 || i === i1 || i === i2) continue;\n\n // find a visible edge on the convex hull using edge hash\n let start = 0;\n for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n start = hullHash[(key + j) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) break;\n }\n\n start = hullPrev[start];\n let e = start, q;\n while (q = hullNext[e], !orient(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) continue; // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n let n = hullNext[e];\n while (q = hullNext[n], orient(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1])) {\n t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n hullTri[i] = this._legalize(t + 2);\n hullNext[n] = n; // mark as removed\n hullSize--;\n n = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])) {\n t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i] = e;\n hullNext[e] = hullPrev[n] = i;\n hullNext[i] = n;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x, y)] = i;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n this.hull[i] = e;\n e = hullNext[e];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n }\n\n _hashKey(x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n }\n\n _legalize(a) {\n const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n let i = 0;\n let ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n const b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/ \\a\n * / || \\ / \\\n * / a||b \\ flip /___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\ /br\n * \\||/ \\ /\n * pr pr\n */\n const a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) break;\n a = EDGE_STACK[--i];\n continue;\n }\n\n const b0 = b - b % 3;\n const al = a0 + (a + 1) % 3;\n const bl = b0 + (b + 2) % 3;\n\n const p0 = triangles[ar];\n const pr = triangles[a];\n const pl = triangles[al];\n const p1 = triangles[bl];\n\n const illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n const hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n let e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n const br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) break;\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n }\n\n _link(a, b) {\n this._halfedges[a] = b;\n if (b !== -1) this._halfedges[b] = a;\n }\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n _addTriangle(i0, i1, i2, a, b, c) {\n const t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n const p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n\n// return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check\nfunction orientIfSure(px, py, rx, ry, qx, qy) {\n const l = (ry - py) * (qx - px);\n const r = (rx - px) * (qy - py);\n return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0;\n}\n\n// a more robust orientation test that's stable in a given triangle (to fix robustness issues)\nfunction orient(rx, ry, qx, qy, px, py) {\n const sign = orientIfSure(px, py, rx, ry, qx, qy) ||\n orientIfSure(rx, ry, qx, qy, px, py) ||\n orientIfSure(qx, qy, px, py, rx, ry);\n return sign < 0;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n const dx = ax - px;\n const dy = ay - py;\n const ex = bx - px;\n const ey = by - py;\n const fx = cx - px;\n const fy = cy - py;\n\n const ap = dx * dx + dy * dy;\n const bp = ex * ex + ey * ey;\n const cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = (ey * bl - dy * cl) * d;\n const y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n const dx = bx - ax;\n const dy = by - ay;\n const ex = cx - ax;\n const ey = cy - ay;\n\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const d = 0.5 / (dx * ey - dy * ex);\n\n const x = ax + (ey * bl - dy * cl) * d;\n const y = ay + (dx * cl - ex * bl) * d;\n\n return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (let i = left + 1; i <= right; i++) {\n const temp = ids[i];\n const tempDist = dists[temp];\n let j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n ids[j + 1] = temp;\n }\n } else {\n const median = (left + right) >> 1;\n let i = left + 1;\n let j = right;\n swap(ids, median, i);\n if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n const temp = ids[i];\n const tempDist = dists[temp];\n while (true) {\n do i++; while (dists[ids[i]] < tempDist);\n do j--; while (dists[ids[j]] > tempDist);\n if (j < i) break;\n swap(ids, i, j);\n }\n ids[left + 1] = ids[j];\n ids[j] = temp;\n\n if (right - i + 1 >= j - left) {\n quicksort(ids, dists, i, right);\n quicksort(ids, dists, left, j - 1);\n } else {\n quicksort(ids, dists, left, j - 1);\n quicksort(ids, dists, i, right);\n }\n }\n}\n\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n return p[0];\n}\nfunction defaultGetY(p) {\n return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n constructor() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n }\n moveTo(x, y) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n }\n lineTo(x, y) {\n this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n }\n arc(x, y, r) {\n x = +x, y = +y, r = +r;\n const x0 = x + r;\n const y0 = y;\n if (r < 0) throw new Error(\"negative radius\");\n if (this._x1 === null) this._ += `M${x0},${y0}`;\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n if (!r) return;\n this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n }\n rect(x, y, w, h) {\n this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n }\n value() {\n return this._ || null;\n }\n}\n","export default class Polygon {\n constructor() {\n this._ = [];\n }\n moveTo(x, y) {\n this._.push([x, y]);\n }\n closePath() {\n this._.push(this._[0].slice());\n }\n lineTo(x, y) {\n this._.push([x, y]);\n }\n value() {\n return this._.length ? this._ : null;\n }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n this.delaunay = delaunay;\n this._circumcenters = new Float64Array(delaunay.points.length * 2);\n this.vectors = new Float64Array(delaunay.points.length * 2);\n this.xmax = xmax, this.xmin = xmin;\n this.ymax = ymax, this.ymin = ymin;\n this._init();\n }\n update() {\n this.delaunay.update();\n this._init();\n return this;\n }\n _init() {\n const {delaunay: {points, hull, triangles}, vectors} = this;\n\n // Compute circumcenters.\n const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n const t1 = triangles[i] * 2;\n const t2 = triangles[i + 1] * 2;\n const t3 = triangles[i + 2] * 2;\n const x1 = points[t1];\n const y1 = points[t1 + 1];\n const x2 = points[t2];\n const y2 = points[t2 + 1];\n const x3 = points[t3];\n const y3 = points[t3 + 1];\n\n const dx = x2 - x1;\n const dy = y2 - y1;\n const ex = x3 - x1;\n const ey = y3 - y1;\n const bl = dx * dx + dy * dy;\n const cl = ex * ex + ey * ey;\n const ab = (dx * ey - dy * ex) * 2;\n\n if (!ab) {\n // degenerate case (collinear diagram)\n x = (x1 + x3) / 2 - 1e8 * ey;\n y = (y1 + y3) / 2 + 1e8 * ex;\n }\n else if (Math.abs(ab) < 1e-8) {\n // almost equal points (degenerate triangle)\n x = (x1 + x3) / 2;\n y = (y1 + y3) / 2;\n } else {\n const d = 1 / ab;\n x = x1 + (ey * bl - dy * cl) * d;\n y = y1 + (dx * cl - ex * bl) * d;\n }\n circumcenters[j] = x;\n circumcenters[j + 1] = y;\n }\n\n // Compute exterior cell rays.\n let h = hull[hull.length - 1];\n let p0, p1 = h * 4;\n let x0, x1 = points[2 * h];\n let y0, y1 = points[2 * h + 1];\n vectors.fill(0);\n for (let i = 0; i < hull.length; ++i) {\n h = hull[i];\n p0 = p1, x0 = x1, y0 = y1;\n p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n vectors[p0 + 2] = vectors[p1] = y0 - y1;\n vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n }\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n if (hull.length <= 1) return null;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = Math.floor(i / 3) * 2;\n const tj = Math.floor(j / 3) * 2;\n const xi = circumcenters[ti];\n const yi = circumcenters[ti + 1];\n const xj = circumcenters[tj];\n const yj = circumcenters[tj + 1];\n this._renderSegment(xi, yi, xj, yj, context);\n }\n let h0, h1 = hull[hull.length - 1];\n for (let i = 0; i < hull.length; ++i) {\n h0 = h1, h1 = hull[i];\n const t = Math.floor(inedges[h1] / 3) * 2;\n const x = circumcenters[t];\n const y = circumcenters[t + 1];\n const v = h0 * 4;\n const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n if (p) this._renderSegment(x, y, p[0], p[1], context);\n }\n return buffer && buffer.value();\n }\n renderBounds(context) {\n const buffer = context == null ? context = new Path : undefined;\n context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n return buffer && buffer.value();\n }\n renderCell(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const points = this._clip(i);\n if (points === null || !points.length) return;\n context.moveTo(points[0], points[1]);\n let n = points.length;\n while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n for (let i = 2; i < n; i += 2) {\n if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n context.lineTo(points[i], points[i + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n *cellPolygons() {\n const {delaunay: {points}} = this;\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const cell = this.cellPolygon(i);\n if (cell) cell.index = i, yield cell;\n }\n }\n cellPolygon(i) {\n const polygon = new Polygon;\n this.renderCell(i, polygon);\n return polygon.value();\n }\n _renderSegment(x0, y0, x1, y1, context) {\n let S;\n const c0 = this._regioncode(x0, y0);\n const c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n context.moveTo(S[0], S[1]);\n context.lineTo(S[2], S[3]);\n }\n }\n contains(i, x, y) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n return this.delaunay._step(i, x, y) === i;\n }\n *neighbors(i) {\n const ci = this._clip(i);\n if (ci) for (const j of this.delaunay.neighbors(i)) {\n const cj = this._clip(j);\n // find the common edge\n if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n if (ci[ai] == cj[aj]\n && ci[ai + 1] == cj[aj + 1]\n && ci[(ai + 2) % li] == cj[(aj + lj - 2) % lj]\n && ci[(ai + 3) % li] == cj[(aj + lj - 1) % lj]\n ) {\n yield j;\n break loop;\n }\n }\n }\n }\n }\n _cell(i) {\n const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n const e0 = inedges[i];\n if (e0 === -1) return null; // coincident point\n const points = [];\n let e = e0;\n do {\n const t = Math.floor(e / 3);\n points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n } while (e !== e0 && e !== -1);\n return points;\n }\n _clip(i) {\n // degenerate case (1 valid point: return the box)\n if (i === 0 && this.delaunay.hull.length === 1) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n const points = this._cell(i);\n if (points === null) return null;\n const {vectors: V} = this;\n const v = i * 4;\n return V[v] || V[v + 1]\n ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n : this._clipFinite(i, points);\n }\n _clipFinite(i, points) {\n const n = points.length;\n let P = null;\n let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n let c0, c1 = this._regioncode(x1, y1);\n let e0, e1;\n for (let j = 0; j < n; j += 2) {\n x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n c0 = c1, c1 = this._regioncode(x1, y1);\n if (c0 === 0 && c1 === 0) {\n e0 = e1, e1 = 0;\n if (P) P.push(x1, y1);\n else P = [x1, y1];\n } else {\n let S, sx0, sy0, sx1, sy1;\n if (c0 === 0) {\n if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n [sx0, sy0, sx1, sy1] = S;\n } else {\n if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n [sx1, sy1, sx0, sy0] = S;\n e0 = e1, e1 = this._edgecode(sx0, sy0);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx0, sy0);\n else P = [sx0, sy0];\n }\n e0 = e1, e1 = this._edgecode(sx1, sy1);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n if (P) P.push(sx1, sy1);\n else P = [sx1, sy1];\n }\n }\n if (P) {\n e0 = e1, e1 = this._edgecode(P[0], P[1]);\n if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n }\n return P;\n }\n _clipSegment(x0, y0, x1, y1, c0, c1) {\n while (true) {\n if (c0 === 0 && c1 === 0) return [x0, y0, x1, y1];\n if (c0 & c1) return null;\n let x, y, c = c0 || c1;\n if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n }\n }\n _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n let P = Array.from(points), p;\n if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n if (P = this._clipFinite(i, P)) {\n for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n }\n } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n }\n return P;\n }\n _edge(i, e0, e1, P, j) {\n while (e0 !== e1) {\n let x, y;\n switch (e0) {\n case 0b0101: e0 = 0b0100; continue; // top-left\n case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n case 0b0110: e0 = 0b0010; continue; // top-right\n case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n case 0b1010: e0 = 0b1000; continue; // bottom-right\n case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n case 0b1001: e0 = 0b0001; continue; // bottom-left\n case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n }\n if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n P.splice(j, 0, x, y), j += 2;\n }\n }\n if (P.length > 4) {\n for (let i = 0; i < P.length; i+= 2) {\n const j = (i + 2) % P.length, k = (i + 4) % P.length;\n if (P[i] === P[j] && P[j] === P[k]\n || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1])\n P.splice(j, 2), i -= 2;\n }\n }\n return j;\n }\n _project(x0, y0, vx, vy) {\n let t = Infinity, c, x, y;\n if (vy < 0) { // top\n if (y0 <= this.ymin) return null;\n if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n } else if (vy > 0) { // bottom\n if (y0 >= this.ymax) return null;\n if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n }\n if (vx > 0) { // right\n if (x0 >= this.xmax) return null;\n if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n } else if (vx < 0) { // left\n if (x0 <= this.xmin) return null;\n if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n }\n return [x, y];\n }\n _edgecode(x, y) {\n return (x === this.xmin ? 0b0001\n : x === this.xmax ? 0b0010 : 0b0000)\n | (y === this.ymin ? 0b0100\n : y === this.ymax ? 0b1000 : 0b0000);\n }\n _regioncode(x, y) {\n return (x < this.xmin ? 0b0001\n : x > this.xmax ? 0b0010 : 0b0000)\n | (y < this.ymin ? 0b0100\n : y > this.ymax ? 0b1000 : 0b0000);\n }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n const {triangles, coords} = d;\n for (let i = 0; i < triangles.length; i += 3) {\n const a = 2 * triangles[i],\n b = 2 * triangles[i + 1],\n c = 2 * triangles[i + 2],\n cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n if (cross > 1e-10) return false;\n }\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n static from(points, fx = pointX, fy = pointY, that) {\n return new Delaunay(\"length\" in points\n ? flatArray(points, fx, fy, that)\n : Float64Array.from(flatIterable(points, fx, fy, that)));\n }\n constructor(points) {\n this._delaunator = new Delaunator(points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = this._delaunator.coords;\n this._init();\n }\n update() {\n this._delaunator.update();\n this._init();\n return this;\n }\n _init() {\n const d = this._delaunator, points = this.points;\n\n // check for collinear\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n for (let i = 0, n = points.length / 2; i < n; ++i) {\n const p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n this._delaunator = new Delaunator(points);\n } else {\n delete this.collinear;\n }\n\n const halfedges = this.halfedges = this._delaunator.halfedges;\n const hull = this.hull = this._delaunator.hull;\n const triangles = this.triangles = this._delaunator.triangles;\n const inedges = this.inedges.fill(-1);\n const hullIndex = this._hullIndex.fill(-1);\n\n // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n for (let e = 0, n = halfedges.length; e < n; ++e) {\n const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n }\n for (let i = 0, n = hull.length; i < n; ++i) {\n hullIndex[hull[i]] = i;\n }\n\n // degenerate case: 1 or 2 (distinct) points\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n inedges[hull[0]] = 1;\n if (hull.length === 2) inedges[hull[1]] = 0;\n }\n }\n voronoi(bounds) {\n return new Voronoi(this, bounds);\n }\n *neighbors(i) {\n const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n // degenerate case with several collinear points\n if (collinear) {\n const l = collinear.indexOf(i);\n if (l > 0) yield collinear[l - 1];\n if (l < collinear.length - 1) yield collinear[l + 1];\n return;\n }\n\n const e0 = inedges[i];\n if (e0 === -1) return; // coincident point\n let e = e0, p0 = -1;\n do {\n yield p0 = triangles[e];\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) return; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n const p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) yield p;\n return;\n }\n } while (e !== e0);\n }\n find(x, y, i = 0) {\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n const i0 = i;\n let c;\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n return c;\n }\n _step(i, x, y) {\n const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n let c = i;\n let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n const e0 = inedges[i];\n let e = e0;\n do {\n let t = triangles[e];\n const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n if (dt < dc) dc = dt, c = t;\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n e = halfedges[e];\n if (e === -1) {\n e = hull[(_hullIndex[i] + 1) % hull.length];\n if (e !== t) {\n if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n }\n break;\n }\n } while (e !== e0);\n return c;\n }\n render(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, halfedges, triangles} = this;\n for (let i = 0, n = halfedges.length; i < n; ++i) {\n const j = halfedges[i];\n if (j < i) continue;\n const ti = triangles[i] * 2;\n const tj = triangles[j] * 2;\n context.moveTo(points[ti], points[ti + 1]);\n context.lineTo(points[tj], points[tj + 1]);\n }\n this.renderHull(context);\n return buffer && buffer.value();\n }\n renderPoints(context, r = 2) {\n const buffer = context == null ? context = new Path : undefined;\n const {points} = this;\n for (let i = 0, n = points.length; i < n; i += 2) {\n const x = points[i], y = points[i + 1];\n context.moveTo(x + r, y);\n context.arc(x, y, r, 0, tau);\n }\n return buffer && buffer.value();\n }\n renderHull(context) {\n const buffer = context == null ? context = new Path : undefined;\n const {hull, points} = this;\n const h = hull[0] * 2, n = hull.length;\n context.moveTo(points[h], points[h + 1]);\n for (let i = 1; i < n; ++i) {\n const h = 2 * hull[i];\n context.lineTo(points[h], points[h + 1]);\n }\n context.closePath();\n return buffer && buffer.value();\n }\n hullPolygon() {\n const polygon = new Polygon;\n this.renderHull(polygon);\n return polygon.value();\n }\n renderTriangle(i, context) {\n const buffer = context == null ? context = new Path : undefined;\n const {points, triangles} = this;\n const t0 = triangles[i *= 3] * 2;\n const t1 = triangles[i + 1] * 2;\n const t2 = triangles[i + 2] * 2;\n context.moveTo(points[t0], points[t0 + 1]);\n context.lineTo(points[t1], points[t1 + 1]);\n context.lineTo(points[t2], points[t2 + 1]);\n context.closePath();\n return buffer && buffer.value();\n }\n *trianglePolygons() {\n const {triangles} = this;\n for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n yield this.trianglePolygon(i);\n }\n }\n trianglePolygon(i) {\n const polygon = new Polygon;\n this.renderTriangle(i, polygon);\n return polygon.value();\n }\n}\n\nfunction flatArray(points, fx, fy, that) {\n const n = points.length;\n const array = new Float64Array(n * 2);\n for (let i = 0; i < n; ++i) {\n const p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n let i = 0;\n for (const p of points) {\n yield fx.call(that, p, i, points);\n yield fy.call(that, p, i, points);\n ++i;\n }\n}\n","import React, { Fragment, useMemo, useRef, useState, useCallback } from 'react';\nimport { withTheme, withDimensions, Container, SvgWrapper, ResponsiveWrapper, getRelativeCursor } from '@nivo/core';\nimport { scaleLinear } from 'd3-scale';\nimport { Delaunay } from 'd3-delaunay';\nimport compose from 'recompose/compose';\nimport defaultProps from 'recompose/defaultProps';\nimport withPropsOnChange from 'recompose/withPropsOnChange';\nimport pure from 'recompose/pure';\nimport PropTypes from 'prop-types';\n\nvar VoronoiPropTypes = {\n data: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired\n })).isRequired,\n xDomain: PropTypes.arrayOf(PropTypes.number).isRequired,\n yDomain: PropTypes.arrayOf(PropTypes.number).isRequired,\n layers: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['links', 'cells', 'points', 'bounds']), PropTypes.func])).isRequired,\n enableLinks: PropTypes.bool.isRequired,\n linkLineWidth: PropTypes.number.isRequired,\n linkLineColor: PropTypes.string.isRequired,\n enableCells: PropTypes.bool.isRequired,\n cellLineWidth: PropTypes.number.isRequired,\n cellLineColor: PropTypes.string.isRequired,\n enablePoints: PropTypes.bool.isRequired,\n pointSize: PropTypes.number.isRequired,\n pointColor: PropTypes.string.isRequired,\n delaunay: PropTypes.object.isRequired,\n voronoi: PropTypes.object.isRequired\n};\nvar VoronoiDefaultProps = {\n xDomain: [0, 1],\n yDomain: [0, 1],\n layers: ['links', 'cells', 'points', 'bounds'],\n enableLinks: false,\n linkLineWidth: 1,\n linkLineColor: '#bbb',\n enableCells: true,\n cellLineWidth: 2,\n cellLineColor: '#000',\n enablePoints: true,\n pointSize: 4,\n pointColor: '#666'\n};\n\nvar enhance = (function (Component) {\n return compose(defaultProps(VoronoiDefaultProps), withTheme(), withDimensions(), withPropsOnChange(['xDomain', 'yDomain', 'width', 'height'], function (_ref) {\n var xDomain = _ref.xDomain,\n yDomain = _ref.yDomain,\n width = _ref.width,\n height = _ref.height;\n return {\n xScale: scaleLinear().domain(xDomain).range([0, width]),\n yScale: scaleLinear().domain(yDomain).range([0, height])\n };\n }), withPropsOnChange(['data', 'xScale', 'yScale'], function (_ref2) {\n var data = _ref2.data,\n xScale = _ref2.xScale,\n yScale = _ref2.yScale;\n return {\n scaledPoints: data.map(function (d) {\n return {\n data: d,\n x: xScale(d.x),\n y: yScale(d.y)\n };\n })\n };\n }), withPropsOnChange(['scaledPoints', 'width', 'height'], function (_ref3) {\n var scaledPoints = _ref3.scaledPoints,\n width = _ref3.width,\n height = _ref3.height;\n var delaunay = Delaunay.from(scaledPoints.map(function (p) {\n return [p.x, p.y];\n }));\n var voronoi = delaunay.voronoi([0, 0, width, height]);\n return {\n delaunay: delaunay,\n voronoi: voronoi\n };\n }), pure)(Component);\n});\n\nvar Voronoi = function Voronoi(_ref) {\n var delaunay = _ref.delaunay,\n voronoi = _ref.voronoi,\n data = _ref.data,\n layers = _ref.layers,\n margin = _ref.margin,\n width = _ref.width,\n height = _ref.height,\n outerWidth = _ref.outerWidth,\n outerHeight = _ref.outerHeight,\n enableLinks = _ref.enableLinks,\n linkLineWidth = _ref.linkLineWidth,\n linkLineColor = _ref.linkLineColor,\n enableCells = _ref.enableCells,\n cellLineWidth = _ref.cellLineWidth,\n cellLineColor = _ref.cellLineColor,\n enablePoints = _ref.enablePoints,\n pointSize = _ref.pointSize,\n pointColor = _ref.pointColor,\n theme = _ref.theme;\n var context = {\n width: width,\n height: height,\n data: data,\n delaunay: delaunay,\n voronoi: voronoi\n };\n var layerById = {\n bounds: React.createElement(\"path\", {\n key: \"bounds\",\n fill: \"none\",\n stroke: cellLineColor,\n strokeWidth: cellLineWidth,\n d: voronoi.renderBounds()\n })\n };\n if (enableLinks === true) {\n layerById.links = React.createElement(\"path\", {\n key: \"links\",\n stroke: linkLineColor,\n strokeWidth: linkLineWidth,\n fill: \"none\",\n d: delaunay.render()\n });\n }\n if (enableCells === true) {\n layerById.cells = React.createElement(\"path\", {\n key: \"cells\",\n d: voronoi.render(),\n fill: \"none\",\n stroke: cellLineColor,\n strokeWidth: cellLineWidth\n });\n }\n if (enablePoints === true) {\n layerById.points = React.createElement(\"path\", {\n key: \"points\",\n stroke: \"none\",\n fill: pointColor,\n d: delaunay.renderPoints(undefined, pointSize / 2)\n });\n }\n return React.createElement(Container, {\n isInteractive: false,\n theme: theme,\n animate: false\n }, function () {\n return (\n React.createElement(SvgWrapper, {\n width: outerWidth,\n height: outerHeight,\n margin: margin,\n theme: theme\n }, layers.map(function (layer, i) {\n if (typeof layer === 'function') {\n return React.createElement(Fragment, {\n key: i\n }, layer(context));\n }\n return layerById[layer];\n }))\n );\n });\n};\nVoronoi.propTypes = VoronoiPropTypes;\nvar Voronoi$1 = enhance(Voronoi);\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\nvar ResponsiveVoronoi = function ResponsiveVoronoi(props) {\n return React.createElement(ResponsiveWrapper, null, function (_ref) {\n var width = _ref.width,\n height = _ref.height;\n return React.createElement(Voronoi$1, _extends({\n width: width,\n height: height\n }, props));\n });\n};\n\nvar getAccessor = function getAccessor(directive) {\n return typeof directive === 'function' ? directive : function (d) {\n return d[directive];\n };\n};\nvar computeMeshPoints = function computeMeshPoints(_ref) {\n var points = _ref.points,\n _ref$x = _ref.x,\n x = _ref$x === void 0 ? 'x' : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 'y' : _ref$y;\n var getX = getAccessor(x);\n var getY = getAccessor(y);\n return points.map(function (p) {\n return [getX(p), getY(p)];\n });\n};\nvar computeMesh = function computeMesh(_ref2) {\n var points = _ref2.points,\n width = _ref2.width,\n height = _ref2.height,\n debug = _ref2.debug;\n var delaunay = Delaunay.from(points);\n var voronoi = debug === true ? delaunay.voronoi([0, 0, width, height]) : undefined;\n return {\n delaunay: delaunay,\n voronoi: voronoi\n };\n};\n\nvar useVoronoiMesh = function useVoronoiMesh(_ref) {\n var points = _ref.points,\n x = _ref.x,\n y = _ref.y,\n width = _ref.width,\n height = _ref.height,\n debug = _ref.debug;\n var points2d = useMemo(function () {\n return computeMeshPoints({\n points: points,\n x: x,\n y: y\n });\n }, [points, x, y]);\n return useMemo(function () {\n return computeMesh({\n points: points2d,\n width: width,\n height: height,\n debug: debug\n });\n }, [points2d, width, height, debug]);\n};\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nvar Mesh = function Mesh(_ref) {\n var nodes = _ref.nodes,\n width = _ref.width,\n height = _ref.height,\n x = _ref.x,\n y = _ref.y,\n debug = _ref.debug,\n onMouseEnter = _ref.onMouseEnter,\n onMouseMove = _ref.onMouseMove,\n onMouseLeave = _ref.onMouseLeave,\n onClick = _ref.onClick;\n var elementRef = useRef(null);\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n currentIndex = _useState2[0],\n setCurrentIndex = _useState2[1];\n var _useVoronoiMesh = useVoronoiMesh({\n points: nodes,\n x: x,\n y: y,\n width: width,\n height: height,\n debug: debug\n }),\n delaunay = _useVoronoiMesh.delaunay,\n voronoi = _useVoronoiMesh.voronoi;\n var voronoiPath = useMemo(function () {\n return debug ? voronoi.render() : undefined;\n });\n var getIndexAndNodeFromEvent = useCallback(function (event) {\n var _getRelativeCursor = getRelativeCursor(elementRef.current, event),\n _getRelativeCursor2 = _slicedToArray(_getRelativeCursor, 2),\n x = _getRelativeCursor2[0],\n y = _getRelativeCursor2[1];\n var index = delaunay.find(x, y);\n return [index, index !== undefined ? nodes[index] : null];\n }, [delaunay]);\n var handleMouseEnter = useCallback(function (event) {\n var _getIndexAndNodeFromE = getIndexAndNodeFromEvent(event),\n _getIndexAndNodeFromE2 = _slicedToArray(_getIndexAndNodeFromE, 2),\n index = _getIndexAndNodeFromE2[0],\n node = _getIndexAndNodeFromE2[1];\n if (currentIndex !== index) setCurrentIndex(index);\n node && onMouseEnter && onMouseEnter(node, event);\n }, [getIndexAndNodeFromEvent, setCurrentIndex]);\n var handleMouseMove = useCallback(function (event) {\n var _getIndexAndNodeFromE3 = getIndexAndNodeFromEvent(event),\n _getIndexAndNodeFromE4 = _slicedToArray(_getIndexAndNodeFromE3, 2),\n index = _getIndexAndNodeFromE4[0],\n node = _getIndexAndNodeFromE4[1];\n if (currentIndex !== index) setCurrentIndex(index);\n node && onMouseMove && onMouseMove(node, event);\n }, [getIndexAndNodeFromEvent, setCurrentIndex]);\n var handleMouseLeave = useCallback(function (event) {\n setCurrentIndex(null);\n if (onMouseLeave) {\n var previousNode;\n if (currentIndex !== undefined && currentIndex !== null) {\n previousNode = nodes[currentIndex];\n }\n previousNode && onMouseLeave(previousNode, event);\n }\n }, [setCurrentIndex, currentIndex, nodes]);\n var handleClick = useCallback(function (event) {\n var _getIndexAndNodeFromE5 = getIndexAndNodeFromEvent(event),\n _getIndexAndNodeFromE6 = _slicedToArray(_getIndexAndNodeFromE5, 2),\n index = _getIndexAndNodeFromE6[0],\n node = _getIndexAndNodeFromE6[1];\n if (currentIndex !== index) setCurrentIndex(index);\n onClick && onClick(node, event);\n }, [getIndexAndNodeFromEvent, setCurrentIndex]);\n return React.createElement(\"g\", {\n ref: elementRef\n }, debug && React.createElement(\"path\", {\n d: voronoiPath,\n stroke: \"red\",\n strokeWidth: 1,\n opacity: 0.75\n }), currentIndex !== null && debug && React.createElement(\"path\", {\n fill: \"red\",\n opacity: 0.35,\n d: voronoi.renderCell(currentIndex)\n }), React.createElement(\"rect\", {\n width: width,\n height: height,\n fill: \"red\",\n opacity: 0,\n style: {\n cursor: 'auto'\n },\n onMouseEnter: handleMouseEnter,\n onMouseMove: handleMouseMove,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick\n }));\n};\nMesh.propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n nodes: PropTypes.array.isRequired,\n x: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]).isRequired,\n y: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]).isRequired,\n onMouseEnter: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onClick: PropTypes.func,\n debug: PropTypes.bool.isRequired\n};\nMesh.defaultProps = {\n x: 'x',\n y: 'y',\n debug: false\n};\n\nvar renderVoronoiToCanvas = function renderVoronoiToCanvas(ctx, voronoi) {\n ctx.save();\n ctx.globalAlpha = 0.75;\n ctx.beginPath();\n voronoi.render(ctx);\n ctx.strokeStyle = 'red';\n ctx.lineWidth = 1;\n ctx.stroke();\n ctx.restore();\n};\nvar renderVoronoiCellToCanvas = function renderVoronoiCellToCanvas(ctx, voronoi, index) {\n ctx.save();\n ctx.globalAlpha = 0.35;\n ctx.beginPath();\n voronoi.renderCell(index, ctx);\n ctx.fillStyle = 'red';\n ctx.fill();\n ctx.restore();\n};\n\nexport { Mesh, ResponsiveVoronoi, Voronoi$1 as Voronoi, VoronoiDefaultProps, VoronoiPropTypes, computeMesh, computeMeshPoints, renderVoronoiCellToCanvas, renderVoronoiToCanvas, useVoronoiMesh };\n","\n// turn {x: {val: 1, stiffness: 1, damping: 2}, y: 2} generated by\n// `{x: spring(1, {stiffness: 1, damping: 2}), y: 2}` into {x: 1, y: 2}\n\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = stripStyle;\n\nfunction stripStyle(style) {\n var ret = {};\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n ret[key] = typeof style[key] === 'number' ? style[key] : style[key].val;\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","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 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 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 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 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 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 * 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 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 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 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 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","/** 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","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","import React, { PureComponent, useState, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport isFunction from 'lodash/isFunction';\nimport { useTheme } from '@nivo/core';\nimport isNumber from 'lodash/isNumber';\nimport isPlainObject from 'lodash/isPlainObject';\n\nvar DIRECTION_ROW = 'row';\nvar DIRECTION_COLUMN = 'column';\nvar ANCHOR_TOP = 'top';\nvar ANCHOR_TOP_RIGHT = 'top-right';\nvar ANCHOR_RIGHT = 'right';\nvar ANCHOR_BOTTOM_RIGHT = 'bottom-right';\nvar ANCHOR_BOTTOM = 'bottom';\nvar ANCHOR_BOTTOM_LEFT = 'bottom-left';\nvar ANCHOR_LEFT = 'left';\nvar ANCHOR_TOP_LEFT = 'top-left';\nvar ANCHOR_CENTER = 'center';\nvar DIRECTION_LEFT_TO_RIGHT = 'left-to-right';\nvar DIRECTION_RIGHT_TO_LEFT = 'right-to-left';\nvar DIRECTION_TOP_TO_BOTTOM = 'top-to-bottom';\nvar DIRECTION_BOTTOM_TO_TOP = 'bottom-to-top';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar legendEffectPropType = PropTypes.shape({\n on: PropTypes.oneOfType([PropTypes.oneOf(['hover'])]).isRequired,\n style: PropTypes.shape({\n itemTextColor: PropTypes.string,\n itemBackground: PropTypes.string,\n itemOpacity: PropTypes.number,\n symbolSize: PropTypes.number,\n symbolBorderWidth: PropTypes.number,\n symbolBorderColor: PropTypes.string\n }).isRequired\n});\nvar symbolPropTypes = {\n symbolShape: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n symbolSize: PropTypes.number,\n symbolSpacing: PropTypes.number,\n symbolBorderWidth: PropTypes.number,\n symbolBorderColor: PropTypes.string\n};\nvar interactivityPropTypes = {\n onClick: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func\n};\nvar datumPropType = PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n color: PropTypes.string.isRequired,\n fill: PropTypes.string\n});\nvar LegendPropShape = _objectSpread({\n data: PropTypes.arrayOf(datumPropType),\n anchor: PropTypes.oneOf([ANCHOR_TOP, ANCHOR_TOP_RIGHT, ANCHOR_RIGHT, ANCHOR_BOTTOM_RIGHT, ANCHOR_BOTTOM, ANCHOR_BOTTOM_LEFT, ANCHOR_LEFT, ANCHOR_TOP_LEFT, ANCHOR_CENTER]).isRequired,\n translateX: PropTypes.number,\n translateY: PropTypes.number,\n direction: PropTypes.oneOf([DIRECTION_ROW, DIRECTION_COLUMN]).isRequired,\n itemsSpacing: PropTypes.number,\n itemWidth: PropTypes.number.isRequired,\n itemHeight: PropTypes.number.isRequired,\n itemDirection: PropTypes.oneOf([DIRECTION_LEFT_TO_RIGHT, DIRECTION_RIGHT_TO_LEFT, DIRECTION_TOP_TO_BOTTOM, DIRECTION_BOTTOM_TO_TOP]),\n itemTextColor: PropTypes.string,\n itemBackground: PropTypes.string,\n itemOpacity: PropTypes.number\n}, symbolPropTypes, interactivityPropTypes, {\n effects: PropTypes.arrayOf(legendEffectPropType)\n});\n\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; }\nfunction _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar zeroPadding = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar computeDimensions = function computeDimensions(_ref) {\n var direction = _ref.direction,\n itemsSpacing = _ref.itemsSpacing,\n _padding = _ref.padding,\n itemCount = _ref.itemCount,\n itemWidth = _ref.itemWidth,\n itemHeight = _ref.itemHeight;\n var padding;\n if (isNumber(_padding)) {\n padding = {\n top: _padding,\n right: _padding,\n bottom: _padding,\n left: _padding\n };\n } else if (isPlainObject(_padding)) {\n padding = _objectSpread$1({}, zeroPadding, _padding);\n } else {\n throw new TypeError(\"Invalid property padding, must be one of: number, object\");\n }\n var horizontalPadding = padding.left + padding.right;\n var verticalPadding = padding.top + padding.bottom;\n var width = itemWidth + horizontalPadding;\n var height = itemHeight + verticalPadding;\n var spacing = (itemCount - 1) * itemsSpacing;\n if (direction === DIRECTION_ROW) {\n width = itemWidth * itemCount + spacing + horizontalPadding;\n } else if (direction === DIRECTION_COLUMN) {\n height = itemHeight * itemCount + spacing + verticalPadding;\n }\n return {\n width: width,\n height: height,\n padding: padding\n };\n};\nvar computePositionFromAnchor = function computePositionFromAnchor(_ref2) {\n var anchor = _ref2.anchor,\n translateX = _ref2.translateX,\n translateY = _ref2.translateY,\n containerWidth = _ref2.containerWidth,\n containerHeight = _ref2.containerHeight,\n width = _ref2.width,\n height = _ref2.height;\n var x = translateX;\n var y = translateY;\n switch (anchor) {\n case ANCHOR_TOP:\n x += (containerWidth - width) / 2;\n break;\n case ANCHOR_TOP_RIGHT:\n x += containerWidth - width;\n break;\n case ANCHOR_RIGHT:\n x += containerWidth - width;\n y += (containerHeight - height) / 2;\n break;\n case ANCHOR_BOTTOM_RIGHT:\n x += containerWidth - width;\n y += containerHeight - height;\n break;\n case ANCHOR_BOTTOM:\n x += (containerWidth - width) / 2;\n y += containerHeight - height;\n break;\n case ANCHOR_BOTTOM_LEFT:\n y += containerHeight - height;\n break;\n case ANCHOR_LEFT:\n y += (containerHeight - height) / 2;\n break;\n case ANCHOR_CENTER:\n x += (containerWidth - width) / 2;\n y += (containerHeight - height) / 2;\n break;\n }\n return {\n x: x,\n y: y\n };\n};\nvar computeItemLayout = function computeItemLayout(_ref3) {\n var direction = _ref3.direction,\n justify = _ref3.justify,\n symbolSize = _ref3.symbolSize,\n symbolSpacing = _ref3.symbolSpacing,\n width = _ref3.width,\n height = _ref3.height;\n var symbolX;\n var symbolY;\n var labelX;\n var labelY;\n var labelAnchor;\n var labelAlignment;\n switch (direction) {\n case DIRECTION_LEFT_TO_RIGHT:\n symbolX = 0;\n symbolY = (height - symbolSize) / 2;\n labelY = height / 2;\n labelAlignment = 'central';\n if (justify === true) {\n labelX = width;\n labelAnchor = 'end';\n } else {\n labelX = symbolSize + symbolSpacing;\n labelAnchor = 'start';\n }\n break;\n case DIRECTION_RIGHT_TO_LEFT:\n symbolX = width - symbolSize;\n symbolY = (height - symbolSize) / 2;\n labelY = height / 2;\n labelAlignment = 'central';\n if (justify === true) {\n labelX = 0;\n labelAnchor = 'start';\n } else {\n labelX = width - symbolSize - symbolSpacing;\n labelAnchor = 'end';\n }\n break;\n case DIRECTION_TOP_TO_BOTTOM:\n symbolX = (width - symbolSize) / 2;\n symbolY = 0;\n labelX = width / 2;\n labelAnchor = 'middle';\n if (justify === true) {\n labelY = height;\n labelAlignment = 'alphabetic';\n } else {\n labelY = symbolSize + symbolSpacing;\n labelAlignment = 'text-before-edge';\n }\n break;\n case DIRECTION_BOTTOM_TO_TOP:\n symbolX = (width - symbolSize) / 2;\n symbolY = height - symbolSize;\n labelX = width / 2;\n labelAnchor = 'middle';\n if (justify === true) {\n labelY = 0;\n labelAlignment = 'text-before-edge';\n } else {\n labelY = height - symbolSize - symbolSpacing;\n labelAlignment = 'alphabetic';\n }\n break;\n }\n return {\n symbolX: symbolX,\n symbolY: symbolY,\n labelX: labelX,\n labelY: labelY,\n labelAnchor: labelAnchor,\n labelAlignment: labelAlignment\n };\n};\n\nvar symbolPropTypes$1 = {\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n size: PropTypes.number.isRequired,\n fill: PropTypes.string.isRequired,\n borderWidth: PropTypes.number.isRequired,\n borderColor: PropTypes.string.isRequired\n};\nvar symbolDefaultProps = {\n borderWidth: 0,\n borderColor: 'transparent'\n};\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$2(target, key, source[key]); }); } return target; }\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar SymbolCircle =\nfunction (_PureComponent) {\n _inherits(SymbolCircle, _PureComponent);\n function SymbolCircle() {\n _classCallCheck(this, SymbolCircle);\n return _possibleConstructorReturn(this, _getPrototypeOf(SymbolCircle).apply(this, arguments));\n }\n _createClass(SymbolCircle, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n size = _this$props.size,\n fill = _this$props.fill,\n borderWidth = _this$props.borderWidth,\n borderColor = _this$props.borderColor;\n return React.createElement(\"circle\", {\n r: size / 2,\n cx: x + size / 2,\n cy: y + size / 2,\n fill: fill,\n strokeWidth: borderWidth,\n stroke: borderColor,\n style: {\n pointerEvents: 'none'\n }\n });\n }\n }]);\n return SymbolCircle;\n}(PureComponent);\n_defineProperty$2(SymbolCircle, \"propTypes\", _objectSpread$2({}, symbolPropTypes$1));\n_defineProperty$2(SymbolCircle, \"defaultProps\", _objectSpread$2({}, symbolDefaultProps));\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$3(target, key, source[key]); }); } return target; }\nfunction _typeof$1(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\nfunction _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties$1(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass$1(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$1(Constructor.prototype, protoProps); if (staticProps) _defineProperties$1(Constructor, staticProps); return Constructor; }\nfunction _possibleConstructorReturn$1(self, call) { if (call && (_typeof$1(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized$1(self); }\nfunction _assertThisInitialized$1(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _getPrototypeOf$1(o) { _getPrototypeOf$1 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf$1(o); }\nfunction _inherits$1(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf$1(subClass, superClass); }\nfunction _setPrototypeOf$1(o, p) { _setPrototypeOf$1 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf$1(o, p); }\nfunction _defineProperty$3(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar SymbolDiamond =\nfunction (_PureComponent) {\n _inherits$1(SymbolDiamond, _PureComponent);\n function SymbolDiamond() {\n _classCallCheck$1(this, SymbolDiamond);\n return _possibleConstructorReturn$1(this, _getPrototypeOf$1(SymbolDiamond).apply(this, arguments));\n }\n _createClass$1(SymbolDiamond, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n size = _this$props.size,\n fill = _this$props.fill,\n borderWidth = _this$props.borderWidth,\n borderColor = _this$props.borderColor;\n return React.createElement(\"g\", {\n transform: \"translate(\".concat(x, \",\").concat(y, \")\")\n }, React.createElement(\"path\", {\n d: \"\\n M\".concat(size / 2, \" 0\\n L\").concat(size * 0.8, \" \").concat(size / 2, \"\\n L\").concat(size / 2, \" \").concat(size, \"\\n L\").concat(size * 0.2, \" \").concat(size / 2, \"\\n L\").concat(size / 2, \" 0\\n \"),\n fill: fill,\n strokeWidth: borderWidth,\n stroke: borderColor,\n style: {\n pointerEvents: 'none'\n }\n }));\n }\n }]);\n return SymbolDiamond;\n}(PureComponent);\n_defineProperty$3(SymbolDiamond, \"propTypes\", _objectSpread$3({}, symbolPropTypes$1));\n_defineProperty$3(SymbolDiamond, \"defaultProps\", _objectSpread$3({}, symbolDefaultProps));\n\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$4(target, key, source[key]); }); } return target; }\nfunction _typeof$2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\nfunction _classCallCheck$2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties$2(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass$2(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$2(Constructor.prototype, protoProps); if (staticProps) _defineProperties$2(Constructor, staticProps); return Constructor; }\nfunction _possibleConstructorReturn$2(self, call) { if (call && (_typeof$2(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized$2(self); }\nfunction _assertThisInitialized$2(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _getPrototypeOf$2(o) { _getPrototypeOf$2 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf$2(o); }\nfunction _inherits$2(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf$2(subClass, superClass); }\nfunction _setPrototypeOf$2(o, p) { _setPrototypeOf$2 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf$2(o, p); }\nfunction _defineProperty$4(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar SymbolSquare =\nfunction (_PureComponent) {\n _inherits$2(SymbolSquare, _PureComponent);\n function SymbolSquare() {\n _classCallCheck$2(this, SymbolSquare);\n return _possibleConstructorReturn$2(this, _getPrototypeOf$2(SymbolSquare).apply(this, arguments));\n }\n _createClass$2(SymbolSquare, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n size = _this$props.size,\n fill = _this$props.fill,\n borderWidth = _this$props.borderWidth,\n borderColor = _this$props.borderColor;\n return React.createElement(\"rect\", {\n x: x,\n y: y,\n fill: fill,\n strokeWidth: borderWidth,\n stroke: borderColor,\n width: size,\n height: size,\n style: {\n pointerEvents: 'none'\n }\n });\n }\n }]);\n return SymbolSquare;\n}(PureComponent);\n_defineProperty$4(SymbolSquare, \"propTypes\", _objectSpread$4({}, symbolPropTypes$1));\n_defineProperty$4(SymbolSquare, \"defaultProps\", _objectSpread$4({}, symbolDefaultProps));\n\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$5(target, key, source[key]); }); } return target; }\nfunction _typeof$3(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\nfunction _classCallCheck$3(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties$3(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass$3(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$3(Constructor.prototype, protoProps); if (staticProps) _defineProperties$3(Constructor, staticProps); return Constructor; }\nfunction _possibleConstructorReturn$3(self, call) { if (call && (_typeof$3(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized$3(self); }\nfunction _assertThisInitialized$3(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _getPrototypeOf$3(o) { _getPrototypeOf$3 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf$3(o); }\nfunction _inherits$3(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf$3(subClass, superClass); }\nfunction _setPrototypeOf$3(o, p) { _setPrototypeOf$3 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf$3(o, p); }\nfunction _defineProperty$5(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar SymbolTriangle =\nfunction (_PureComponent) {\n _inherits$3(SymbolTriangle, _PureComponent);\n function SymbolTriangle() {\n _classCallCheck$3(this, SymbolTriangle);\n return _possibleConstructorReturn$3(this, _getPrototypeOf$3(SymbolTriangle).apply(this, arguments));\n }\n _createClass$3(SymbolTriangle, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n size = _this$props.size,\n fill = _this$props.fill,\n borderWidth = _this$props.borderWidth,\n borderColor = _this$props.borderColor;\n return React.createElement(\"g\", {\n transform: \"translate(\".concat(x, \",\").concat(y, \")\")\n }, React.createElement(\"path\", {\n d: \"\\n M\".concat(size / 2, \" 0\\n L\").concat(size, \" \").concat(size, \"\\n L0 \").concat(size, \"\\n L\").concat(size / 2, \" 0\\n \"),\n fill: fill,\n strokeWidth: borderWidth,\n stroke: borderColor,\n style: {\n pointerEvents: 'none'\n }\n }));\n }\n }]);\n return SymbolTriangle;\n}(PureComponent);\n_defineProperty$5(SymbolTriangle, \"propTypes\", _objectSpread$5({}, symbolPropTypes$1));\n_defineProperty$5(SymbolTriangle, \"defaultProps\", _objectSpread$5({}, symbolDefaultProps));\n\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$6(target, key, source[key]); }); } return target; }\nfunction _defineProperty$6(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nvar symbolByShape = {\n circle: SymbolCircle,\n diamond: SymbolDiamond,\n square: SymbolSquare,\n triangle: SymbolTriangle\n};\nvar LegendSvgItem = function LegendSvgItem(_ref) {\n var x = _ref.x,\n y = _ref.y,\n width = _ref.width,\n height = _ref.height,\n data = _ref.data,\n direction = _ref.direction,\n justify = _ref.justify,\n textColor = _ref.textColor,\n background = _ref.background,\n opacity = _ref.opacity,\n symbolShape = _ref.symbolShape,\n symbolSize = _ref.symbolSize,\n symbolSpacing = _ref.symbolSpacing,\n symbolBorderWidth = _ref.symbolBorderWidth,\n symbolBorderColor = _ref.symbolBorderColor,\n onClick = _ref.onClick,\n onMouseEnter = _ref.onMouseEnter,\n onMouseLeave = _ref.onMouseLeave,\n effects = _ref.effects;\n var _useState = useState({}),\n _useState2 = _slicedToArray(_useState, 2),\n style = _useState2[0],\n setStyle = _useState2[1];\n var theme = useTheme();\n var handleClick = useCallback(function (event) {\n return onClick && onClick(data, event);\n }, [onClick, data]);\n var handleMouseEnter = useCallback(function (event) {\n if (effects.length > 0) {\n var applyEffects = effects.filter(function (_ref2) {\n var on = _ref2.on;\n return on === 'hover';\n });\n var _style = applyEffects.reduce(function (acc, effect) {\n return _objectSpread$6({}, acc, effect.style);\n }, {});\n setStyle(_style);\n }\n if (onMouseEnter === undefined) return;\n onMouseEnter(data, event);\n }, [onMouseEnter, data, effects]);\n var handleMouseLeave = useCallback(function () {\n if (effects.length > 0) {\n var applyEffects = effects.filter(function (_ref3) {\n var on = _ref3.on;\n return on !== 'hover';\n });\n var _style2 = applyEffects.reduce(function (acc, effect) {\n return _objectSpread$6({}, acc, effect.style);\n }, {});\n setStyle(_style2);\n }\n if (onMouseLeave === undefined) return;\n onMouseLeave(data, event);\n }, [onMouseLeave, data, effects]);\n var _computeItemLayout = computeItemLayout({\n direction: direction,\n justify: justify,\n symbolSize: style.symbolSize || symbolSize,\n symbolSpacing: symbolSpacing,\n width: width,\n height: height\n }),\n symbolX = _computeItemLayout.symbolX,\n symbolY = _computeItemLayout.symbolY,\n labelX = _computeItemLayout.labelX,\n labelY = _computeItemLayout.labelY,\n labelAnchor = _computeItemLayout.labelAnchor,\n labelAlignment = _computeItemLayout.labelAlignment;\n var isInteractive = [onClick, onMouseEnter, onMouseLeave].some(function (handler) {\n return handler !== undefined;\n });\n var _Symbol;\n if (isFunction(symbolShape)) {\n _Symbol = symbolShape;\n } else {\n _Symbol = symbolByShape[symbolShape];\n }\n return React.createElement(\"g\", {\n transform: \"translate(\".concat(x, \",\").concat(y, \")\"),\n style: {\n opacity: style.itemOpacity !== undefined ? style.itemOpacity : opacity\n }\n }, React.createElement(\"rect\", {\n width: width,\n height: height,\n fill: style.itemBackground || background,\n style: {\n cursor: isInteractive ? 'pointer' : 'auto'\n },\n onClick: handleClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave\n }), React.createElement(_Symbol, {\n id: data.id,\n x: symbolX,\n y: symbolY,\n size: style.symbolSize || symbolSize,\n fill: data.fill || data.color,\n borderWidth: style.symbolBorderWidth !== undefined ? style.symbolBorderWidth : symbolBorderWidth,\n borderColor: style.symbolBorderColor || symbolBorderColor\n }), React.createElement(\"text\", {\n textAnchor: labelAnchor,\n style: _objectSpread$6({}, theme.legends.text, {\n fill: style.itemTextColor || textColor,\n dominantBaseline: labelAlignment,\n pointerEvents: 'none',\n userSelect: 'none'\n }),\n x: labelX,\n y: labelY\n }, data.label));\n};\nLegendSvgItem.displayName = 'LegendSvgItem';\nLegendSvgItem.propTypes = _objectSpread$6({\n data: datumPropType.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n textColor: PropTypes.string,\n background: PropTypes.string,\n opacity: PropTypes.number,\n direction: PropTypes.oneOf(['left-to-right', 'right-to-left', 'top-to-bottom', 'bottom-to-top']).isRequired,\n justify: PropTypes.bool.isRequired\n}, symbolPropTypes, interactivityPropTypes);\nLegendSvgItem.defaultProps = {\n direction: 'left-to-right',\n justify: false,\n textColor: 'black',\n background: 'transparent',\n opacity: 1,\n symbolShape: 'square',\n symbolSize: 16,\n symbolSpacing: 8,\n symbolBorderWidth: 0,\n symbolBorderColor: 'transparent',\n effects: []\n};\n\nfunction _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$7(target, key, source[key]); }); } return target; }\nfunction _defineProperty$7(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar LegendSvg = function LegendSvg(_ref) {\n var data = _ref.data,\n x = _ref.x,\n y = _ref.y,\n direction = _ref.direction,\n _padding = _ref.padding,\n justify = _ref.justify,\n effects = _ref.effects,\n itemWidth = _ref.itemWidth,\n itemHeight = _ref.itemHeight,\n itemDirection = _ref.itemDirection,\n itemsSpacing = _ref.itemsSpacing,\n itemTextColor = _ref.itemTextColor,\n itemBackground = _ref.itemBackground,\n itemOpacity = _ref.itemOpacity,\n symbolShape = _ref.symbolShape,\n symbolSize = _ref.symbolSize,\n symbolSpacing = _ref.symbolSpacing,\n symbolBorderWidth = _ref.symbolBorderWidth,\n symbolBorderColor = _ref.symbolBorderColor,\n onClick = _ref.onClick,\n onMouseEnter = _ref.onMouseEnter,\n onMouseLeave = _ref.onMouseLeave;\n var _computeDimensions = computeDimensions({\n itemCount: data.length,\n itemWidth: itemWidth,\n itemHeight: itemHeight,\n itemsSpacing: itemsSpacing,\n direction: direction,\n padding: _padding\n }),\n padding = _computeDimensions.padding;\n var xStep = 0;\n var yStep = 0;\n if (direction === 'row') {\n xStep = itemWidth + itemsSpacing;\n } else if (direction === 'column') {\n yStep = itemHeight + itemsSpacing;\n }\n return React.createElement(\"g\", {\n transform: \"translate(\".concat(x, \",\").concat(y, \")\")\n }, data.map(function (data, i) {\n return React.createElement(LegendSvgItem, {\n key: i,\n data: data,\n x: i * xStep + padding.left,\n y: i * yStep + padding.top,\n width: itemWidth,\n height: itemHeight,\n direction: itemDirection,\n justify: justify,\n effects: effects,\n textColor: itemTextColor,\n background: itemBackground,\n opacity: itemOpacity,\n symbolShape: symbolShape,\n symbolSize: symbolSize,\n symbolSpacing: symbolSpacing,\n symbolBorderWidth: symbolBorderWidth,\n symbolBorderColor: symbolBorderColor,\n onClick: onClick,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave\n });\n }));\n};\nLegendSvg.propTypes = _objectSpread$7({\n data: PropTypes.arrayOf(datumPropType).isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n direction: PropTypes.oneOf(['row', 'column']).isRequired,\n padding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n top: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number\n })]).isRequired,\n justify: PropTypes.bool.isRequired,\n itemsSpacing: PropTypes.number.isRequired,\n itemWidth: PropTypes.number.isRequired,\n itemHeight: PropTypes.number.isRequired,\n itemDirection: PropTypes.oneOf([DIRECTION_LEFT_TO_RIGHT, DIRECTION_RIGHT_TO_LEFT, DIRECTION_TOP_TO_BOTTOM, DIRECTION_BOTTOM_TO_TOP]).isRequired,\n itemTextColor: PropTypes.string.isRequired,\n itemBackground: PropTypes.string.isRequired,\n itemOpacity: PropTypes.number.isRequired\n}, symbolPropTypes, interactivityPropTypes);\nLegendSvg.defaultProps = {\n padding: 0,\n justify: false,\n itemsSpacing: 0,\n itemDirection: 'left-to-right',\n itemTextColor: 'black',\n itemBackground: 'transparent',\n itemOpacity: 1\n};\n\nfunction _objectSpread$8(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$8(target, key, source[key]); }); } return target; }\nfunction _defineProperty$8(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar BoxLegendSvg = function BoxLegendSvg(_ref) {\n var data = _ref.data,\n containerWidth = _ref.containerWidth,\n containerHeight = _ref.containerHeight,\n translateX = _ref.translateX,\n translateY = _ref.translateY,\n anchor = _ref.anchor,\n direction = _ref.direction,\n padding = _ref.padding,\n justify = _ref.justify,\n itemsSpacing = _ref.itemsSpacing,\n itemWidth = _ref.itemWidth,\n itemHeight = _ref.itemHeight,\n itemDirection = _ref.itemDirection,\n itemTextColor = _ref.itemTextColor,\n itemBackground = _ref.itemBackground,\n itemOpacity = _ref.itemOpacity,\n symbolShape = _ref.symbolShape,\n symbolSize = _ref.symbolSize,\n symbolSpacing = _ref.symbolSpacing,\n symbolBorderWidth = _ref.symbolBorderWidth,\n symbolBorderColor = _ref.symbolBorderColor,\n onClick = _ref.onClick,\n onMouseEnter = _ref.onMouseEnter,\n onMouseLeave = _ref.onMouseLeave,\n effects = _ref.effects;\n var _computeDimensions = computeDimensions({\n itemCount: data.length,\n itemsSpacing: itemsSpacing,\n itemWidth: itemWidth,\n itemHeight: itemHeight,\n direction: direction,\n padding: padding\n }),\n width = _computeDimensions.width,\n height = _computeDimensions.height;\n var _computePositionFromA = computePositionFromAnchor({\n anchor: anchor,\n translateX: translateX,\n translateY: translateY,\n containerWidth: containerWidth,\n containerHeight: containerHeight,\n width: width,\n height: height\n }),\n x = _computePositionFromA.x,\n y = _computePositionFromA.y;\n return React.createElement(LegendSvg, {\n data: data,\n x: x,\n y: y,\n direction: direction,\n padding: padding,\n justify: justify,\n effects: effects,\n itemsSpacing: itemsSpacing,\n itemWidth: itemWidth,\n itemHeight: itemHeight,\n itemDirection: itemDirection,\n itemTextColor: itemTextColor,\n itemBackground: itemBackground,\n itemOpacity: itemOpacity,\n symbolShape: symbolShape,\n symbolSize: symbolSize,\n symbolSpacing: symbolSpacing,\n symbolBorderWidth: symbolBorderWidth,\n symbolBorderColor: symbolBorderColor,\n onClick: onClick,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave\n });\n};\nBoxLegendSvg.propTypes = _objectSpread$8({\n data: PropTypes.arrayOf(datumPropType).isRequired,\n containerWidth: PropTypes.number.isRequired,\n containerHeight: PropTypes.number.isRequired,\n translateX: PropTypes.number.isRequired,\n translateY: PropTypes.number.isRequired,\n anchor: PropTypes.oneOf([ANCHOR_TOP, ANCHOR_TOP_RIGHT, ANCHOR_RIGHT, ANCHOR_BOTTOM_RIGHT, ANCHOR_BOTTOM, ANCHOR_BOTTOM_LEFT, ANCHOR_LEFT, ANCHOR_TOP_LEFT, ANCHOR_CENTER]).isRequired,\n direction: PropTypes.oneOf([DIRECTION_ROW, DIRECTION_COLUMN]).isRequired,\n padding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n top: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number\n })]).isRequired,\n justify: PropTypes.bool,\n itemWidth: PropTypes.number.isRequired,\n itemHeight: PropTypes.number.isRequired,\n itemDirection: PropTypes.oneOf([DIRECTION_LEFT_TO_RIGHT, DIRECTION_RIGHT_TO_LEFT, DIRECTION_TOP_TO_BOTTOM, DIRECTION_BOTTOM_TO_TOP]),\n itemsSpacing: PropTypes.number.isRequired,\n itemTextColor: PropTypes.string,\n itemBackground: PropTypes.string,\n itemOpacity: PropTypes.number\n}, symbolPropTypes, interactivityPropTypes);\nBoxLegendSvg.defaultProps = {\n translateX: 0,\n translateY: 0,\n itemsSpacing: LegendSvg.defaultProps.itemsSpacing,\n padding: LegendSvg.defaultProps.padding\n};\n\nvar textPropsMapping = {\n align: {\n start: 'left',\n middle: 'center',\n end: 'right'\n },\n baseline: {\n hanging: 'top',\n middle: 'middle',\n central: 'middle',\n baseline: 'bottom'\n }\n};\nvar renderLegendToCanvas = function renderLegendToCanvas(ctx, _ref) {\n var data = _ref.data,\n containerWidth = _ref.containerWidth,\n containerHeight = _ref.containerHeight,\n _ref$translateX = _ref.translateX,\n translateX = _ref$translateX === void 0 ? BoxLegendSvg.defaultProps.translateX : _ref$translateX,\n _ref$translateY = _ref.translateY,\n translateY = _ref$translateY === void 0 ? BoxLegendSvg.defaultProps.translateY : _ref$translateY,\n anchor = _ref.anchor,\n direction = _ref.direction,\n _ref$padding = _ref.padding,\n _padding = _ref$padding === void 0 ? LegendSvg.defaultProps.padding : _ref$padding,\n _ref$justify = _ref.justify,\n justify = _ref$justify === void 0 ? LegendSvgItem.defaultProps.justify : _ref$justify,\n _ref$itemsSpacing = _ref.itemsSpacing,\n itemsSpacing = _ref$itemsSpacing === void 0 ? LegendSvg.defaultProps.itemsSpacing : _ref$itemsSpacing,\n itemWidth = _ref.itemWidth,\n itemHeight = _ref.itemHeight,\n _ref$itemDirection = _ref.itemDirection,\n itemDirection = _ref$itemDirection === void 0 ? LegendSvgItem.defaultProps.direction : _ref$itemDirection,\n _ref$itemTextColor = _ref.itemTextColor,\n itemTextColor = _ref$itemTextColor === void 0 ? LegendSvg.defaultProps.textColor : _ref$itemTextColor,\n _ref$symbolSize = _ref.symbolSize,\n symbolSize = _ref$symbolSize === void 0 ? LegendSvgItem.defaultProps.symbolSize : _ref$symbolSize,\n _ref$symbolSpacing = _ref.symbolSpacing,\n symbolSpacing = _ref$symbolSpacing === void 0 ? LegendSvgItem.defaultProps.symbolSpacing : _ref$symbolSpacing,\n theme = _ref.theme;\n var _computeDimensions = computeDimensions({\n itemCount: data.length,\n itemWidth: itemWidth,\n itemHeight: itemHeight,\n itemsSpacing: itemsSpacing,\n direction: direction,\n padding: _padding\n }),\n width = _computeDimensions.width,\n height = _computeDimensions.height,\n padding = _computeDimensions.padding;\n var _computePositionFromA = computePositionFromAnchor({\n anchor: anchor,\n translateX: translateX,\n translateY: translateY,\n containerWidth: containerWidth,\n containerHeight: containerHeight,\n width: width,\n height: height\n }),\n x = _computePositionFromA.x,\n y = _computePositionFromA.y;\n var xStep = 0;\n var yStep = 0;\n if (direction === DIRECTION_ROW) {\n xStep = itemWidth + itemsSpacing;\n } else if (direction === DIRECTION_COLUMN) {\n yStep = itemHeight + itemsSpacing;\n }\n ctx.save();\n ctx.translate(x, y);\n ctx.font = \"\".concat(theme.legends.text.fontSize, \"px \").concat(theme.legends.text.fontFamily || 'sans-serif');\n data.forEach(function (d, i) {\n var itemX = i * xStep + padding.left;\n var itemY = i * yStep + padding.top;\n var _computeItemLayout = computeItemLayout({\n direction: itemDirection,\n justify: justify,\n symbolSize: symbolSize,\n symbolSpacing: symbolSpacing,\n width: itemWidth,\n height: itemHeight\n }),\n symbolX = _computeItemLayout.symbolX,\n symbolY = _computeItemLayout.symbolY,\n labelX = _computeItemLayout.labelX,\n labelY = _computeItemLayout.labelY,\n labelAnchor = _computeItemLayout.labelAnchor,\n labelAlignment = _computeItemLayout.labelAlignment;\n ctx.fillStyle = d.color;\n ctx.fillRect(itemX + symbolX, itemY + symbolY, symbolSize, symbolSize);\n ctx.textAlign = textPropsMapping.align[labelAnchor];\n ctx.textBaseline = textPropsMapping.baseline[labelAlignment];\n ctx.fillStyle = itemTextColor || theme.legends.text.fill;\n ctx.fillText(d.label, itemX + labelX, itemY + labelY);\n });\n ctx.restore();\n};\n\nfunction _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _nonIterableRest$1(); }\nfunction _nonIterableRest$1() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit$1(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; }\nvar useQuantizeColorScaleLegendData = function useQuantizeColorScaleLegendData(_ref) {\n var scale = _ref.scale,\n overriddenDomain = _ref.domain,\n _ref$reverse = _ref.reverse,\n reverse = _ref$reverse === void 0 ? false : _ref$reverse,\n _ref$valueFormat = _ref.valueFormat,\n valueFormat = _ref$valueFormat === void 0 ? function (v) {\n return v;\n } : _ref$valueFormat,\n _ref$separator = _ref.separator,\n separator = _ref$separator === void 0 ? ' - ' : _ref$separator;\n return useMemo(function () {\n var domain = overriddenDomain || scale.range();\n var items = domain.map(function (domainValue, index) {\n var _scale$invertExtent = scale.invertExtent(domainValue),\n _scale$invertExtent2 = _slicedToArray$1(_scale$invertExtent, 2),\n start = _scale$invertExtent2[0],\n end = _scale$invertExtent2[1];\n return {\n id: domainValue,\n index: index,\n extent: [start, end],\n label: \"\".concat(valueFormat(start)).concat(separator).concat(valueFormat(end)),\n value: scale(start),\n color: domainValue\n };\n });\n if (reverse === true) items.reverse();\n return items;\n }, [overriddenDomain, scale, reverse]);\n};\n\nexport { ANCHOR_BOTTOM, ANCHOR_BOTTOM_LEFT, ANCHOR_BOTTOM_RIGHT, ANCHOR_CENTER, ANCHOR_LEFT, ANCHOR_RIGHT, ANCHOR_TOP, ANCHOR_TOP_LEFT, ANCHOR_TOP_RIGHT, BoxLegendSvg, DIRECTION_BOTTOM_TO_TOP, DIRECTION_COLUMN, DIRECTION_LEFT_TO_RIGHT, DIRECTION_RIGHT_TO_LEFT, DIRECTION_ROW, DIRECTION_TOP_TO_BOTTOM, LegendPropShape, LegendSvg, LegendSvgItem, datumPropType, interactivityPropTypes, legendEffectPropType, renderLegendToCanvas, symbolPropTypes, useQuantizeColorScaleLegendData };\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target),\n step;\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n return interval.every(step);\n }\n\n return interval;\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1]))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import PropTypes from 'prop-types';\nimport { scaleLinear, scaleLog, scalePoint, scaleUtc, scaleTime } from 'd3-scale';\nimport { utcParse, timeParse } from 'd3-time-format';\nimport uniq from 'lodash/uniq';\nimport uniqBy from 'lodash/uniqBy';\nimport sortBy from 'lodash/sortBy';\nimport last from 'lodash/last';\nimport isDate from 'lodash/isDate';\n\nvar linearScale = function linearScale(_ref, xy, width, height) {\n var axis = _ref.axis,\n _ref$min = _ref.min,\n min = _ref$min === void 0 ? 0 : _ref$min,\n _ref$max = _ref.max,\n max = _ref$max === void 0 ? 'auto' : _ref$max,\n _ref$stacked = _ref.stacked,\n stacked = _ref$stacked === void 0 ? false : _ref$stacked,\n _ref$reverse = _ref.reverse,\n reverse = _ref$reverse === void 0 ? false : _ref$reverse;\n var values = xy[axis];\n var size = axis === 'x' ? width : height;\n var minValue = min;\n if (min === 'auto') {\n minValue = stacked === true ? values.minStacked : values.min;\n }\n var maxValue = max;\n if (max === 'auto') {\n maxValue = stacked === true ? values.maxStacked : values.max;\n }\n var scale = scaleLinear().rangeRound(axis === 'x' ? [0, size] : [size, 0]);\n if (reverse === true) scale.domain([maxValue, minValue]);else scale.domain([minValue, maxValue]);\n scale.type = 'linear';\n scale.stacked = stacked;\n return scale;\n};\nvar linearScalePropTypes = {\n type: PropTypes.oneOf(['linear']).isRequired,\n min: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),\n max: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),\n stacked: PropTypes.bool,\n reverse: PropTypes.bool\n};\n\nvar logScale = function logScale(_ref, xy, width, height) {\n var axis = _ref.axis,\n _ref$base = _ref.base,\n base = _ref$base === void 0 ? 10 : _ref$base,\n _ref$min = _ref.min,\n min = _ref$min === void 0 ? 'auto' : _ref$min,\n _ref$max = _ref.max,\n max = _ref$max === void 0 ? 'auto' : _ref$max;\n var values = xy[axis];\n var size = axis === 'x' ? width : height;\n var hasZero = values.all.some(function (v) {\n return v === 0;\n });\n var sign;\n var hasMixedSign = false;\n values.all.forEach(function (v) {\n if (hasMixedSign === true) return;\n if (sign === undefined) {\n sign = Math.sign(v);\n } else if (Math.sign(v) !== sign) {\n hasMixedSign = true;\n }\n });\n if (hasZero || hasMixedSign) {\n throw new Error([\"a log scale domain must be strictly-positive or strictly-negative,\", \"and must not include or cross zero.\"].join('\\n'));\n }\n var minValue = min;\n if (min === 'auto') {\n minValue = values.min;\n }\n var maxValue = max;\n if (max === 'auto') {\n maxValue = values.max;\n }\n var scale = scaleLog().domain([minValue, maxValue]).rangeRound(axis === 'x' ? [0, size] : [size, 0]).base(base).nice();\n scale.type = 'log';\n return scale;\n};\nvar logScalePropTypes = {\n type: PropTypes.oneOf(['log']).isRequired,\n base: PropTypes.number,\n min: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]),\n max: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number])\n};\n\nvar pointScale = function pointScale(_ref, xy, width, height) {\n var axis = _ref.axis;\n var values = xy[axis];\n var size = axis === 'x' ? width : height;\n var scale = scalePoint().range([0, size]).domain(values.all);\n scale.type = 'point';\n return scale;\n};\nvar pointScalePropTypes = {\n type: PropTypes.oneOf(['point']).isRequired\n};\n\nvar _precisionCutOffsByTy;\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar TIME_PRECISION_MILLISECOND = 'millisecond';\nvar TIME_PRECISION_SECOND = 'second';\nvar TIME_PRECISION_MINUTE = 'minute';\nvar TIME_PRECISION_HOUR = 'hour';\nvar TIME_PRECISION_DAY = 'day';\nvar TIME_PRECISION_MONTH = 'month';\nvar TIME_PRECISION_YEAR = 'year';\nvar timePrecisions = [TIME_PRECISION_MILLISECOND, TIME_PRECISION_SECOND, TIME_PRECISION_MINUTE, TIME_PRECISION_HOUR, TIME_PRECISION_DAY, TIME_PRECISION_MONTH, TIME_PRECISION_YEAR];\nvar precisionCutOffs = [function (date) {\n return date.setMilliseconds(0);\n}, function (date) {\n return date.setSeconds(0);\n}, function (date) {\n return date.setMinutes(0);\n}, function (date) {\n return date.setHours(0);\n}, function (date) {\n return date.setDate(1);\n}, function (date) {\n return date.setMonth(0);\n}];\nvar precisionCutOffsByType = (_precisionCutOffsByTy = {}, _defineProperty(_precisionCutOffsByTy, TIME_PRECISION_MILLISECOND, []), _defineProperty(_precisionCutOffsByTy, TIME_PRECISION_SECOND, precisionCutOffs.slice(0, 1)), _defineProperty(_precisionCutOffsByTy, TIME_PRECISION_MINUTE, precisionCutOffs.slice(0, 2)), _defineProperty(_precisionCutOffsByTy, TIME_PRECISION_HOUR, precisionCutOffs.slice(0, 3)), _defineProperty(_precisionCutOffsByTy, TIME_PRECISION_DAY, precisionCutOffs.slice(0, 4)), _defineProperty(_precisionCutOffsByTy, TIME_PRECISION_MONTH, precisionCutOffs.slice(0, 5)), _defineProperty(_precisionCutOffsByTy, TIME_PRECISION_YEAR, precisionCutOffs.slice(0, 6)), _precisionCutOffsByTy);\nvar createPrecisionMethod = function createPrecisionMethod(precision) {\n return function (date) {\n precisionCutOffsByType[precision].forEach(function (cutOff) {\n cutOff(date);\n });\n return date;\n };\n};\nvar createDateNormalizer = function createDateNormalizer(_ref) {\n var _ref$format = _ref.format,\n format = _ref$format === void 0 ? 'native' : _ref$format,\n _ref$precision = _ref.precision,\n precision = _ref$precision === void 0 ? 'millisecond' : _ref$precision,\n _ref$useUTC = _ref.useUTC,\n useUTC = _ref$useUTC === void 0 ? true : _ref$useUTC;\n var precisionFn = createPrecisionMethod(precision);\n if (format === 'native') return function (v) {\n return precisionFn(v);\n };\n var parseTime = useUTC ? utcParse(format) : timeParse(format);\n return function (v) {\n return precisionFn(parseTime(v));\n };\n};\n\nvar timeScale = function timeScale(_ref, xy, width, height) {\n var axis = _ref.axis,\n _ref$format = _ref.format,\n format = _ref$format === void 0 ? 'native' : _ref$format,\n _ref$precision = _ref.precision,\n precision = _ref$precision === void 0 ? TIME_PRECISION_MILLISECOND : _ref$precision,\n _ref$min = _ref.min,\n min = _ref$min === void 0 ? 'auto' : _ref$min,\n _ref$max = _ref.max,\n max = _ref$max === void 0 ? 'auto' : _ref$max,\n _ref$useUTC = _ref.useUTC,\n useUTC = _ref$useUTC === void 0 ? true : _ref$useUTC;\n var values = xy[axis];\n var size = axis === 'x' ? width : height;\n var normalize = createDateNormalizer({\n format: format,\n precision: precision,\n useUTC: useUTC\n });\n var minValue = min;\n if (min === 'auto') {\n minValue = values.min;\n } else if (format !== 'native') {\n minValue = normalize(min);\n }\n var maxValue = max;\n if (max === 'auto') {\n maxValue = values.max;\n } else if (format !== 'native') {\n maxValue = normalize(max);\n }\n var scale = useUTC ? scaleUtc() : scaleTime();\n scale.domain([minValue, maxValue]).range([0, size]);\n scale.type = 'time';\n scale.useUTC = useUTC;\n return scale;\n};\nvar timeScalePropTypes = {\n type: PropTypes.oneOf(['time']).isRequired,\n format: PropTypes.string,\n precision: PropTypes.oneOf(timePrecisions)\n};\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; }\nfunction _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar getOtherAxis = function getOtherAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n};\nvar compareValues = function compareValues(a, b) {\n return a === b;\n};\nvar compareDateValues = function compareDateValues(a, b) {\n return a.getTime() === b.getTime();\n};\nvar computeXYScalesForSeries = function computeXYScalesForSeries(_series, xScaleSpec, yScaleSpec, width, height) {\n var series = _series.map(function (serie) {\n return _objectSpread({}, serie, {\n data: serie.data.map(function (d) {\n return {\n data: _objectSpread({}, d)\n };\n })\n });\n });\n var xy = generateSeriesXY(series, xScaleSpec, yScaleSpec);\n if (xScaleSpec.stacked === true) {\n stackX(yScaleSpec.type, xy, series);\n }\n if (yScaleSpec.stacked === true) {\n stackY(xScaleSpec.type, xy, series);\n }\n var xScale = computeScale(_objectSpread({}, xScaleSpec, {\n axis: 'x'\n }), xy, width, height);\n var yScale = computeScale(_objectSpread({}, yScaleSpec, {\n axis: 'y'\n }), xy, width, height);\n series.forEach(function (serie) {\n serie.data.forEach(function (d) {\n d.position = {\n x: xScale.stacked === true ? d.data.xStacked === null ? null : xScale(d.data.xStacked) : d.data.x === null ? null : xScale(d.data.x),\n y: yScale.stacked === true ? d.data.yStacked === null ? null : yScale(d.data.yStacked) : d.data.y === null ? null : yScale(d.data.y)\n };\n });\n });\n return _objectSpread({}, xy, {\n series: series,\n xScale: xScale,\n yScale: yScale\n });\n};\nvar computeScale = function computeScale(spec, xy, width, height) {\n if (spec.type === 'linear') return linearScale(spec, xy, width, height);else if (spec.type === 'point') return pointScale(spec, xy, width, height);else if (spec.type === 'time') return timeScale(spec, xy, width, height);else if (spec.type === 'log') return logScale(spec, xy, width, height);\n};\nvar generateSeriesXY = function generateSeriesXY(series, xScaleSpec, yScaleSpec) {\n return {\n x: generateSeriesAxis(series, 'x', xScaleSpec),\n y: generateSeriesAxis(series, 'y', yScaleSpec)\n };\n};\nvar generateSeriesAxis = function generateSeriesAxis(series, axis, scaleSpec) {\n var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},\n _ref$getValue = _ref.getValue,\n getValue = _ref$getValue === void 0 ? function (d) {\n return d.data[axis];\n } : _ref$getValue,\n _ref$setValue = _ref.setValue,\n setValue = _ref$setValue === void 0 ? function (d, v) {\n d.data[axis] = v;\n } : _ref$setValue;\n if (scaleSpec.type === 'linear') {\n series.forEach(function (serie) {\n serie.data.forEach(function (d) {\n setValue(d, getValue(d) === null ? null : parseFloat(getValue(d)));\n });\n });\n } else if (scaleSpec.type === 'time' && scaleSpec.format !== 'native') {\n var parseTime = createDateNormalizer(scaleSpec);\n series.forEach(function (serie) {\n serie.data.forEach(function (d) {\n setValue(d, getValue(d) === null ? null : parseTime(getValue(d)));\n });\n });\n }\n var all = [];\n series.forEach(function (serie) {\n serie.data.forEach(function (d) {\n all.push(getValue(d));\n });\n });\n var min, max;\n if (scaleSpec.type === 'linear') {\n all = uniq(all);\n all = sortBy(all, function (v) {\n return v;\n });\n min = Math.min.apply(Math, _toConsumableArray(all));\n max = Math.max.apply(Math, _toConsumableArray(all));\n } else if (scaleSpec.type === 'time') {\n all = uniqBy(all, function (v) {\n return v.getTime();\n });\n all = all.slice(0).sort(function (a, b) {\n return b - a;\n }).reverse();\n min = all[0];\n max = last(all);\n } else {\n all = uniq(all);\n min = all[0];\n max = last(all);\n }\n return {\n all: all,\n min: min,\n max: max\n };\n};\nvar stackAxis = function stackAxis(axis, otherType, xy, series) {\n var otherAxis = getOtherAxis(axis);\n var all = [];\n xy[otherAxis].all.forEach(function (v) {\n var compare = isDate(v) ? compareDateValues : compareValues;\n var stack = [];\n series.forEach(function (serie) {\n var datum = serie.data.find(function (d) {\n return compare(d.data[otherAxis], v);\n });\n var value = null;\n var stackValue = null;\n if (datum !== undefined) {\n value = datum.data[axis];\n if (value !== null) {\n var head = last(stack);\n if (head === undefined) {\n stackValue = value;\n } else if (head !== null) {\n stackValue = head + value;\n }\n }\n datum.data[\"\".concat(axis, \"Stacked\")] = stackValue;\n }\n stack.push(stackValue);\n all.push(stackValue);\n });\n });\n all = all.filter(function (v) {\n return v !== null;\n });\n xy[axis].minStacked = Math.min.apply(Math, _toConsumableArray(all));\n xy[axis].maxStacked = Math.max.apply(Math, _toConsumableArray(all));\n};\nvar stackX = function stackX(xy, otherType, series) {\n return stackAxis('x', xy, otherType, series);\n};\nvar stackY = function stackY(xy, otherType, series) {\n return stackAxis('y', xy, otherType, series);\n};\nvar computeAxisSlices = function computeAxisSlices(axis, data) {\n var otherAxis = getOtherAxis(axis);\n return data[otherAxis].all.map(function (v) {\n var _slice;\n var slice = (_slice = {\n id: v\n }, _defineProperty$1(_slice, otherAxis, data[\"\".concat(otherAxis, \"Scale\")](v)), _defineProperty$1(_slice, \"data\", []), _slice);\n var compare = isDate(v) ? compareDateValues : compareValues;\n data.series.forEach(function (serie) {\n var datum = serie.data.find(function (d) {\n return compare(d.data[otherAxis], v);\n });\n if (datum !== undefined) {\n slice.data.push(_objectSpread({}, datum, {\n serie: serie\n }));\n }\n });\n slice.data.reverse();\n return slice;\n });\n};\nvar computeXSlices = function computeXSlices(data) {\n return computeAxisSlices('x', data);\n};\nvar computeYSlices = function computeYSlices(data) {\n return computeAxisSlices('y', data);\n};\n\nvar scalePropType = PropTypes.oneOfType([PropTypes.shape(linearScalePropTypes), PropTypes.shape(pointScalePropTypes), PropTypes.shape(timeScalePropTypes), PropTypes.shape(logScalePropTypes)]);\n\nexport { compareDateValues, compareValues, computeAxisSlices, computeScale, computeXSlices, computeXYScalesForSeries, computeYSlices, generateSeriesAxis, generateSeriesXY, getOtherAxis, linearScale, linearScalePropTypes, logScale, logScalePropTypes, pointScale, pointScalePropTypes, scalePropType, stackAxis, stackX, stackY, timeScale, timeScalePropTypes };\n","import {calendar} from \"./time.js\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init.js\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","// 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","\n\n// currently used to initiate the velocity style object to 0\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mapToZero;\n\nfunction mapToZero(obj) {\n var ret = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n ret[key] = 0;\n }\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","\n\n// stepper is used a lot. Saves allocation to return the same array wrapper.\n// This is fine and danger-free against mutations because the callsite\n// immediately destructures it and gets the numbers inside without passing the\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stepper;\n\nvar reusedTuple = [0, 0];\n\nfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n // Spring stiffness, in kg / s^2\n\n // for animations, destX is really spring length (spring at rest). initial\n // position is considered as the stretched/compressed position of a spring\n var Fspring = -k * (x - destX);\n\n // Damping, in kg / s\n var Fdamper = -b * v;\n\n // usually we put mass here, but for animation purposes, specifying mass is a\n // bit redundant. you could simply adjust k and b accordingly\n // let a = (Fspring + Fdamper) / mass;\n var a = Fspring + Fdamper;\n\n var newV = v + a * secondPerFrame;\n var newX = x + newV * secondPerFrame;\n\n if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n reusedTuple[0] = destX;\n reusedTuple[1] = 0;\n return reusedTuple;\n }\n\n reusedTuple[0] = newX;\n reusedTuple[1] = newV;\n return reusedTuple;\n}\n\nmodule.exports = exports[\"default\"];\n// array reference around.","// Generated by CoffeeScript 1.7.1\n(function() {\n var getNanoSeconds, hrtime, loadTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - loadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n loadTime = getNanoSeconds();\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","\n\n// usage assumption: currentStyle values have already been rendered but it says\n// nothing of whether currentStyle is stale (see unreadPropStyle)\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = shouldStopAnimation;\n\nfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n\n if (currentVelocity[key] !== 0) {\n return false;\n }\n\n var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n // stepper will have already taken care of rounding precision errors, so\n // won't have such thing as 0.9999 !=== 1\n if (currentStyle[key] !== styleValue) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports['default'];","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 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 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","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\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","/** 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","/** 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","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 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","/**\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","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 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 * 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","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 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 * 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 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","/**\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 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 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","/**\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","/**\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","'use strict';\n\n/**\n * Stringify/parse functions that don't operate\n * recursively, so they avoid call stack exceeded\n * errors.\n */\nexports.stringify = function stringify(input) {\n var queue = [];\n queue.push({obj: input});\n\n var res = '';\n var next, obj, prefix, val, i, arrayPrefix, keys, k, key, value, objPrefix;\n while ((next = queue.pop())) {\n obj = next.obj;\n prefix = next.prefix || '';\n val = next.val || '';\n res += prefix;\n if (val) {\n res += val;\n } else if (typeof obj !== 'object') {\n res += typeof obj === 'undefined' ? null : JSON.stringify(obj);\n } else if (obj === null) {\n res += 'null';\n } else if (Array.isArray(obj)) {\n queue.push({val: ']'});\n for (i = obj.length - 1; i >= 0; i--) {\n arrayPrefix = i === 0 ? '' : ',';\n queue.push({obj: obj[i], prefix: arrayPrefix});\n }\n queue.push({val: '['});\n } else { // object\n keys = [];\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n keys.push(k);\n }\n }\n queue.push({val: '}'});\n for (i = keys.length - 1; i >= 0; i--) {\n key = keys[i];\n value = obj[key];\n objPrefix = (i > 0 ? ',' : '');\n objPrefix += JSON.stringify(key) + ':';\n queue.push({obj: value, prefix: objPrefix});\n }\n queue.push({val: '{'});\n }\n }\n return res;\n};\n\n// Convenience function for the parse function.\n// This pop function is basically copied from\n// pouchCollate.parseIndexableString\nfunction pop(obj, stack, metaStack) {\n var lastMetaElement = metaStack[metaStack.length - 1];\n if (obj === lastMetaElement.element) {\n // popping a meta-element, e.g. an object whose value is another object\n metaStack.pop();\n lastMetaElement = metaStack[metaStack.length - 1];\n }\n var element = lastMetaElement.element;\n var lastElementIndex = lastMetaElement.index;\n if (Array.isArray(element)) {\n element.push(obj);\n } else if (lastElementIndex === stack.length - 2) { // obj with key+value\n var key = stack.pop();\n element[key] = obj;\n } else {\n stack.push(obj); // obj with key only\n }\n}\n\nexports.parse = function (str) {\n var stack = [];\n var metaStack = []; // stack for arrays and objects\n var i = 0;\n var collationIndex,parsedNum,numChar;\n var parsedString,lastCh,numConsecutiveSlashes,ch;\n var arrayElement, objElement;\n while (true) {\n collationIndex = str[i++];\n if (collationIndex === '}' ||\n collationIndex === ']' ||\n typeof collationIndex === 'undefined') {\n if (stack.length === 1) {\n return stack.pop();\n } else {\n pop(stack.pop(), stack, metaStack);\n continue;\n }\n }\n switch (collationIndex) {\n case ' ':\n case '\\t':\n case '\\n':\n case ':':\n case ',':\n break;\n case 'n':\n i += 3; // 'ull'\n pop(null, stack, metaStack);\n break;\n case 't':\n i += 3; // 'rue'\n pop(true, stack, metaStack);\n break;\n case 'f':\n i += 4; // 'alse'\n pop(false, stack, metaStack);\n break;\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n case '-':\n parsedNum = '';\n i--;\n while (true) {\n numChar = str[i++];\n if (/[\\d\\.\\-e\\+]/.test(numChar)) {\n parsedNum += numChar;\n } else {\n i--;\n break;\n }\n }\n pop(parseFloat(parsedNum), stack, metaStack);\n break;\n case '\"':\n parsedString = '';\n lastCh = void 0;\n numConsecutiveSlashes = 0;\n while (true) {\n ch = str[i++];\n if (ch !== '\"' || (lastCh === '\\\\' &&\n numConsecutiveSlashes % 2 === 1)) {\n parsedString += ch;\n lastCh = ch;\n if (lastCh === '\\\\') {\n numConsecutiveSlashes++;\n } else {\n numConsecutiveSlashes = 0;\n }\n } else {\n break;\n }\n }\n pop(JSON.parse('\"' + parsedString + '\"'), stack, metaStack);\n break;\n case '[':\n arrayElement = { element: [], index: stack.length };\n stack.push(arrayElement.element);\n metaStack.push(arrayElement);\n break;\n case '{':\n objElement = { element: {}, index: stack.length };\n stack.push(objElement.element);\n metaStack.push(objElement);\n break;\n default:\n throw new Error(\n 'unexpectedly reached end of input: ' + collationIndex);\n }\n }\n};\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 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","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\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 * 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\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 * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\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 == 'object';\n}\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) ||\n 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' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\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 baseIsDate = require('./_baseIsDate'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsDate = nodeUtil && nodeUtil.isDate;\n\n/**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\nvar isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\nmodule.exports = isDate;\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","var \t\t\t_ = require(\"underscore\");\nvar gimage \t\t= require('google-image-chart').charts;\n\nvar timeseries = function(data, options) {\n\t/*\n\t\tData Format:\n\t\t[\n\t\t\t[Date Object, value],\n\t\t\t[Date Object, value]\n\t\t]\n\t*/\n\tthis.options \t= _.extend({\n\t\t\n\t}, options);\n\t\n\tthis.data \t\t= data;\n\tthis.original\t= data.slice(0);\n\tthis.buffer \t= [];\n\tthis.saved \t\t= [];\n\t\n\treturn this;\n}\n\n\n// Output the data\ntimeseries.prototype.output = function() {\n\treturn this.data;\n}\n\n\n// Save the data\ntimeseries.prototype.save = function(name, options) {\n\toptions = _.extend({\n\t\tcolor:\t'AUTO'\n\t}, options);\n\t\n\tthis.saved.push({\n\t\tname:\tname,\n\t\tcolor:\toptions.color,\n\t\tdata:\tthis.data.slice(0)\n\t});\n\treturn this;\n}\n\n// Chart the data\ntimeseries.prototype.chart = function(options) {\n\t\n\toptions = _.extend({\n\t\tmain:\t\tfalse,\n\t\twidth:\t\t800,\n\t\theight:\t\t200,\n\t\tbands:\t\t[],\n\t\tlines:\t\t[],\n\t\tpoints:\t\t[]\n\t}, options);\n\t\n\t// Google Chart\n\tvar chart = new gimage.line({\n\t\twidth:\toptions.width,\n\t\theight:\toptions.height,\n\t\tbands:\toptions.bands,\n\t\thlines:\toptions.lines,\n\t\tpoints:\toptions.points,\n\t\tautoscale:\ttrue\n\t});\n\tchart.fromTimeseries(this.data);\n\t// Include the original data\n\tif (options.main) {\n\t\tchart.fromTimeseries(this.original);\n\t}\n\t\n\t// Include saved data\n\t_.each(this.saved, function(saved) {\n\t\tchart.fromTimeseries(saved.data);\n\t});\n\t\n\treturn chart.render();\n}\n\n\n// Basic utilities: Array fill, data cloning...\n// Returns an array filled with the specified value.\ntimeseries.prototype.fill = function(value, n) {\n\tvar array = [];\n\tvar i;\n\tfor (i=0;i0;j--) {\n\t\t\tsum += this.data[i-j][1];\n\t\t}\n\t\tthis.buffer[i] = [this.data[i][0], sum/options.period];\n\t}\n\tthis.data = this.buffer;\n\treturn this;\n}\ntimeseries.prototype.ema = function(options) {\n\toptions = _.extend({\n\t\tperiod:\t\t12\n\t}, options);\n\tvar i;\n\tvar j;\n\tvar l \t= this.data.length;\n\tvar sum\t= 0;\n\t\n\t// Reset the buffer\n\tthis.buffer \t= [];\n\t\n\t// Leave the datapoints [0;period[ intact\n\tthis.buffer = this.data.slice(0, options.period);\n\t\n\tvar m\t= 2/(options.period+1);\t// Multiplier\n\t\n\tfor (i=options.period;i0;j--) {\n\t\t\tsum += this.data[i-j][1]*j;\n\t\t\tn += j;\n\t\t}\n\t\tthis.buffer[i] = [this.data[i][0], sum/n];\n\t}\n\tthis.data = this.buffer;\n\treturn this;\n}\n\n\n\n// DSL, iTrend\ntimeseries.prototype.dsp_itrend = function(options) {\n\t// By Ehler\n\t// http://www.davenewberg.com/Trading/TS_Code/Ehlers_Indicators/iTrend_Ind.html\n\toptions = _.extend({\n\t\talpha:\t\t0.7,\n\t\tuse:\t\t'main'\n\t}, options);\n\tvar i;\n\tvar j;\n\tvar l \t= this.data.length;\n\t\n\tvar trigger \t= [];\n\t\n\t// Reset the buffer\n\tthis.buffer \t= [];\n\t\n\t// Leave the datapoints [0;period[ intact\n\tthis.buffer \t= this.data.slice(0, 3);\n\tthis.trigger \t= this.data.slice(0, 3);\n\t\n\tfor (i=3;i= options.threshold;\n\t});\n\tif (options.stats) {\n\t\treturn \tordered;\n\t}\n\t\n\treturn _.map(ordered, function(support) {\n\t\treturn support.price;\n\t});\n}\n\n\n// Standardize the data\ntimeseries.prototype.standardize = function(options) {\n\toptions = _.extend({}, options);\n\t\n\tvar stdev\t= this.stdev();\n\tvar mean\t= this.mean();\n\t\n\tthis.data = _.map(this.data, function(datapoint) {\n\t\tdatapoint[1] = (datapoint[1]-mean)/stdev;\n\t\treturn datapoint;\n\t});\n\t\n\treturn this;\n}\n\n\n// Slice the data\ntimeseries.prototype.slice = function(from, to) {\n\tif (!from) {\n\t\tfrom = 0;\n\t}\n\tif (!to) {\n\t\tto = this.data.length-1;\n\t}\n\t\n\tthis.data = this.data.splice(from, to)\n\t\n\treturn this;\n}\n\n\n// Find the cycle in the data\ntimeseries.prototype.cycle = function(options) {\n\toptions = _.extend({\n\t\tperiod:\t\t10,\n\t\tforecast:\tfalse,\n\t\tforecast_length:\t20\n\t}, options);\n\t\n\t// Smooth the data\n\tthis.smoother(options);\n\t\n\t\n\t\n\t// Copy the data\n\tvar buffer \t\t\t\t= [];\n\tvar buffer_forecast \t= [];\n\t\n\tvar i;\n\tvar j;\n\tvar l = this.data.length;\n\tfor (i=0;i<2;i++) {\n\t\tbuffer[i] = ([\n\t\t\tthis.data[i][0],\n\t\t\tthis.data[i][1]\n\t\t]);\n\t\tbuffer_forecast[i] = ([\n\t\t\tthis.data[i][0],\n\t\t\tthis.data[i][1]\n\t\t]);\n\t}\n\tfor (i=2;i0,\n\t\t\td2>0\n\t\t]);\n\t\t\n\t}\n\t\n\tif (options.forecast) {\n\t\tfor (i=2;i0)==buffer_forecast[i][3]) && ((d2>0)==buffer_forecast[i][3])) {\n\t\t\t\t\t\tminMSE \t= mse;\n\t\t\t\t\t\tpos\t\t= j;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsole.log(\"minMSE\",minMSE, pos);\n\t\t\t\t\n\t\t\t\tfor (j=0;j<=options.forecast_length;j++) {\n\t\t\t\t\tbuffer_forecast[i+j][1] = Math.sin((pos+j)*Math.PI/180);\n\t\t\t\t\t\n\t\t\t\t\t//buffer_forecast[i+j][1] = sin[pos+j];\n\t\t\t\t\t\n\t\t\t\t\tconsole.log(\"buffer_forecast[\"+(i+j)+\"]\", pos+j, buffer_forecast[i+j][1]);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.data = buffer_forecast;\n\t} else {\n\t\tthis.data = buffer;\n\t}\n\t\n\treturn this;\n}\n\n\n// Get the outliers from the dataset\ntimeseries.prototype.outliers = function(options) {\n\t// Original code by Professor Hossein Arsham - http://home.ubalt.edu/ntsbarsh/Business-stat/otherapplets/Outlier.htm\n\t// Re-written for timeseries-analysis.\n\t\n\toptions = _.extend({\n\t\tthreshold:\t2.5\n\t}, options);\n\t\n\t\n\t// Create a copy of the data;\n\tthis.buffer \t= this.data.slice(0);\n\t\n\t// standardize the data\n\tthis.standardize();\n\t\n\tvar outliers = [];\n\t\n\t_.each(this.data, function(datapoint) {\n\t\tif (Math.abs(datapoint[1]) > options.threshold) {\n\t\t\toutliers.push(datapoint);\n\t\t}\n\t});\n\t\n\t// restore the data\n\tthis.data = this.buffer.slice(0);\n\tdelete this.buffer;\n\t\n\treturn outliers;\n}\n\n\n/* EXPERIMENTAL - AutoRegression Analysis */\n\ntimeseries.prototype.regression_forecast = function(options) {\n\toptions = _.extend({\n\t\tmethod:\t\t'ARMaxEntropy',\t// ARMaxEntropy | ARLeastSquare\n\t\tsample:\t\t50,\t\t// points int he sample\n\t\tstart:\t\t100,\t// Where to start\n\t\tn:\t\t\t5,\t\t// How many points to forecast\n\t\tdegree:\t\t5\n\t},options);\n\t\n\tvar i;\n\tvar j;\n\tvar l = this.data.length;\n\t\n\tvar mean\t= this.mean();\n\tthis.offset(-mean);\n\tvar backup \t= this.clone();\n\tvar buffer \t= this.clone();\n\t\n\tvar sample \t\t= buffer.slice(options.start-1-options.sample, options.start);\n\t\n\t// The current data to process is only a sample of the real data.\n\tthis.data\t\t= sample;\n\t// Get the AR coeffs\n\tvar coeffs \t\t= this[options.method]({degree: options.degree});\n\tconsole.log(\"coeffs\",coeffs);\n\t\n\tfor (i=options.start;ib.MSE;\n\t});\n\t\n\tconsole.log(\"Best Settings: \",MSEData[0]);\n\t\n\t// Return the best settings\n\treturn MSEData[0];\n\t\n}\n// Calculate the MSE for a forecast, for a set of parameters\ntimeseries.prototype.regression_forecast_mse = function(options) {\n\toptions = _.extend({\n\t\tmethod:\t\t'ARMaxEntropy',\t// ARMaxEntropy | ARLeastSquare\n\t\tsample:\t\t50,\n\t\tdegree:\t\t5,\n\t\tdata:\t\tthis.data\n\t},options);\n\t\n\t\n\tvar i;\n\tvar j;\n\tvar l \t\t\t= options.data.length;\n\t\n\tvar mean\t\t= this.mean(options.data);\n\toptions.data \t= this.offset(-mean, options.data, true);\n\t\n\tvar backup \t\t= _.map(options.data, function(item) {\n\t\treturn [\n\t\t\titem[0],\n\t\t\titem[1]*1\n\t\t];\n\t});\n\tvar buffer \t\t= _.map(options.data, function(item) {\n\t\treturn [\n\t\t\titem[0],\n\t\t\titem[1]*1\n\t\t];\n\t});\n\t\n\tvar MSE\t= 0;\n\tvar n = 0;\n\tfor (i=options.sample;i max) {\n\t\t\t\tmax = h;\n\t\t\t\tmaxi = j;\n\t\t\t}\n\t\t}\n\t\tif (maxi != i) {\n\t\t\tmswap = mat[i];\n\t\t\tmat[i] = mat[maxi];\n\t\t\tmat[maxi] = mswap;\n\t\t\tvswap = vec[i];\n\t\t\tvec[i] = vec[maxi];\n\t\t\tvec[maxi] = vswap;\n\t\t}\n\t\n\t\thvec = mat[i];\n\t\tpivot = hvec[i];\n\t\tif (Math.abs(pivot) == 0.0) {\n\t\t\tconsole.log(\"Singular matrix - fatal!\");\n\t\t\treturn false;\n\t\t}\n\t\tfor (j=i+1;j=0;i--) {\n\t\thvec = mat[i];\n\t\tfor (j=n-1;j>i;j--) {\n\t\t\tvec[i] -= (hvec[j] * vec[j]);\n\t\t}\n\t\tvec[i] /= hvec[i];\n\t}\n\t\n\treturn vec;\n}\n\n// Regression analysis. Will most likely be re-written in the future.\ntimeseries.prototype.regression_analysis = function(options) {\n\t// Original code by Professor Hossein Arsham - http://home.ubalt.edu/ntsbarsh/Business-stat/otherapplets/Trend.htm\n\t// Re-written for timeseries-analysis.\n\t\n\toptions = _.extend({\n\t\tthreshold:\t2.5\n\t}, options);\n\t\n\tvar output \t= {};\n\t\n\tvar i;\n\tvar j;\n\tvar E \t\t= this.data.length; //total number of input spaces\n\tvar N \t\t= 0;\n\tvar N1 \t\t= 0;\n\tvar N2 \t\t= 0;\n\tvar SUM \t= 0.0;\n\tvar R \t\t= 1;\n\tvar Median\t= 0;\n\tvar theList = new Array();\n\tvar cval \t= new Array();\n\t// Run through all the input, add those that have valid values\n\tvar a\t\t= 0;\n\tfor(i=0;i < E;i++) \t{\n\t\tSUM \t\t+= this.data[i][1];\n\t\ttheList[a] \t= this.data[i][1];\n\t\tcval[a] \t= this.data[i][1];\n\t\tN++;\n\t\ta++;\n\t}\n\t//check for insufficient data\n\tif(N <= 10) {\n\t\tconsole.log(\"Insufficient data (min 10)\");\n\t\treturn false;\n\t}\n\t//sort the list\n\tfor(i=0; i x)\t\t {\n\t\t\t\tN1++;\n\t\t\t\ta = i;\n\t\t\t\twhile (a > 0) {\n\t\t\t\t\ta--;\n\t\t\t\t\tif(this.data[a][1] != x) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.data[a][1] < x) {\n\t\t\t\t\tR++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//if it is less than mean\n\t\t\telse if (this.data[i][1] < x) {\n\t\t\t\tN2++;\n\t\t\t\ta = i;\n\t\t\t\twhile (a > 0) {\n\t\t\t\t\ta--;\n\t\t\t\t\tif(this.data[a][1] != x) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.data[a][1] > x) {\n\t\t\t\t\tR++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t//form.NR.value = R; //value of x or \"Scores\"\n\t// What is the runs' statistic? I don't know...\n\t// Is it http://en.wikipedia.org/wiki/Wald%E2%80%93Wolfowitz_runs_test ?\n\toutput.runs\t= R;\n\t\n\n\t//compute the expected mean and variance of R\n\tvar EM \t= 1 + (2*N1*N2)/(N1+N2); //Mean \"Mu\"\n\tvar SD1 = [2*N1*N2*(2*N1*N2-N1-N2)];\n\tvar SD2 = Math.pow( (N1 + N2), 2);\n\tvar SD3 = N1 + N2 - 1;\n\tvar SD4 = SD1 / (SD2 * SD3); //Standard deviation \"Sigma\"\n\tvar SD \t= Math.sqrt(SD4);\n\t//calculating P value MStyle\n\tvar z1 \t= (R - EM)/SD;\n\tvar z2 \t= Math.abs(z1);\n\tvar z \t= z2;\n\t\n\t/* Thanks to Jan de Leeuw for the following function */\n\tvar t \t= (z > 0) ? z : (-z);\n\tvar P1 \t= Math.pow((1+t*(0.049867347 + t*(0.0211410061 + t*(0.0032776263 + t*(0.0000380036 + t*(0.0000488906 + t*(0.000005383))))))), -16);\n\tvar p \t= 1 - P1 / 2;\n\tvar t \t= 1-((z > 0) ? p : 1-p); //this is P-value\n\t\n\t//rounding the value\n\tvar t1 \t= Math.round(100000*t);\n\tvar t2 \t= t1/100000; //this is P-value too\n\t//form.PV.value = t2;\n\n\t//determine the conclusion\n\t// Encoding the trend value from 0 (no trend) to 3 (strong strend evidence)\n\tif (t2 < 0.01) {\n\t\t//form.CON.value = \"Strong evidence for trend\";\n\t\toutput.trend\t= 3;\n\t} else if (t2 < 0.05 && t2 >= 0.01) {\n\t\t//form.CON.value = \"Moderate evidence for trend\";\n\t\toutput.trend\t= 2;\n\t} else if (t2 < 0.10 && t2 >= 0.05) {\n\t\t//form.CON.value = \"Suggestive evidence for trend\";\n\t\toutput.trend\t= 1;\n\t} else if (t2 >= 0.10) {\n\t\t//form.CON.value = \"Little or no real evidences for trend\";\n\t\toutput.trend\t= 0;\n\t} else {\n\t\t//form.CON.value = \"Strong evidence for trend\";\n\t\toutput.trend\t= 3;\n\t}\n\n\t//AUTO CORRELATION\n\tvar DWNN = 0;\n\tvar DWND = (cval[0]*cval[0]);\n\tfor (i=1; i=Q01) || (DW<=(4 - Q01))) {\n\t\t//form.COND.value = \"Moderate evidence againt autocorrelation\";\n\t\toutput.autocorrelation\t= 2;\n\t} else if((DW >= Q05)&&(DW<=(4 - Q05))) {\n\t\t//form.COND.value = \"Strong evidences against autocorrelation\";\n\t\toutput.autocorrelation\t= 3;\n\t} else {\n\t\t//form.COND.value = \"Suggestive evidences for autocorrelation\";\n\t\toutput.autocorrelation\t= 1;\n\t}\n\t\n\treturn output;\n}\n\n// Get the Durbin-Watson statistic\n// http://en.wikipedia.org/wiki/Durbin%E2%80%93Watson_statistic\ntimeseries.prototype.durbinWatson = function() {\n\treturn this.regression_analysis().durbinWatson;\n}\n\n// Get the Durbin-Watson statistic\n// http://en.wikipedia.org/wiki/Durbin%E2%80%93Watson_statistic\ntimeseries.prototype.regression_analysis = function() {\n\treturn this.regression_analysis().durbinWatson;\n}\n\n\n\n\n// Data adapters\nvar adapter = {\n\t\n};\nadapter.fromDB = function(data, options) {\n\toptions = _.extend({\n\t\tvalue:\t\t'close',\n\t\tdate:\t\t'date'\n\t}, options);\n\t\n\treturn _.map(data, function(datapoint) {\n\t\treturn [new Date(datapoint[options.date]).getTime(), datapoint[options.value]];\n\t});\n};\nadapter.fromArray = function(data) {\n\treturn _.map(data, function(datapoint) {\n\t\treturn [new Date(), datapoint];\n\t});\n};\nadapter.geometric = function(options) {\n\toptions = _.extend({\n\t}, options);\n\t\n\t\n\tvar i;\n\tvar j;\n\tvar output = [];\n\tfor (i=0;i<128;i++) {\n\t\toutput.push([\n\t\t\tnew Date(),\n\t\t\tMath.cos(i*0.01)+0.75*Math.cos(i*0.03)+0.5*Math.cos(i*0.05)+0.25*Math.cos(i*0.11)\n\t\t]);\n\t}\n\treturn output;\n};\nadapter.complex = function(options) {\n\toptions = _.extend({\n\t\tcycles:\t\t10,\n\t\tquality:\t1,\n\t\tinertia:\t0\n\t}, options);\n\t\n\t\n\tvar i;\n\tvar j;\n\tvar output = [];\n\tfor (i=0;i 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = {\n noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n gentle: { stiffness: 120, damping: 14 },\n wobbly: { stiffness: 180, damping: 12 },\n stiff: { stiffness: 210, damping: 20 }\n};\nmodule.exports = exports[\"default\"];","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\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 assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\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 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 root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\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 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 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 // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\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 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","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","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","/** 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 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 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 (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\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","/**\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","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar setStatic = function setStatic(key, value) {\n return function (BaseComponent) {\n /* eslint-disable no-param-reassign */\n BaseComponent[key] = value;\n /* eslint-enable no-param-reassign */\n\n return BaseComponent;\n };\n};\n\nvar _default = setStatic;\nexports.default = _default;","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 // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\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","/**\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","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 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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _shallowEqual = _interopRequireDefault(require(\"fbjs/lib/shallowEqual\"));\n\nvar _default = _shallowEqual.default;\nexports.default = _default;","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 WeakMap = require('./_WeakMap');\n\n/** Used to store function metadata. */\nvar metaMap = WeakMap && new WeakMap;\n\nmodule.exports = metaMap;\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","/* 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","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 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","/**\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 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 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","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","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","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 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 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 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 * 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","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n return function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n}\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Map');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakMap');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('Set');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n","import tagTester from './_tagTester.js';\n\nexport default tagTester('DataView');\n","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n if (isArrayLike(obj) && (isArray(obj) || isString(obj) || isArguments(obj))) return obj.length === 0;\n return keys(obj).length === 0;\n}\n","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport keys from './keys.js';\nimport has from './_has.js';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n // Coerce to `DataView` so we can fall through to the next case.\n return deepEq(new DataView(a), new DataView(b), aStack, bStack);\n case '[object DataView]':\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) {\n return false;\n }\n while (byteLength--) {\n if (a.getUint8(byteLength) !== b.getUint8(byteLength)) {\n return false;\n }\n }\n return true;\n }\n\n if (isTypedArray(a)) {\n // Coerce typed arrays to `DataView`.\n return deepEq(new DataView(a.buffer), new DataView(b.buffer), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n","import isArray from './isArray.js';\nimport _has from './_has.js';\nimport { hasOwnProperty } from './_setup.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n if (!isArray(path)) {\n return _has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n}\n","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n","import isArray from './isArray.js';\nimport shallowProperty from './_shallowProperty.js';\nimport deepGet from './_deepGet.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n if (!isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n","import isArray from './isArray.js';\nimport deepGet from './_deepGet.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !isArray(path) ? obj[path] : deepGet(obj, path);\n };\n}\n","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n","import isArray from './isArray.js';\nimport isFunction from './isFunction.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n if (!isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","import restArguments from './restArguments.js';\nimport delay from './delay.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n}\n","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport isArray from './isArray.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else if (isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n","import isArrayLike from './_isArrayLike.js';\nimport clone from './clone.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","import immediate from 'immediate';\nimport { v4 } from 'uuid';\nimport Md5 from 'spark-md5';\nimport vuvuzela from 'vuvuzela';\nimport getArguments from 'argsarray';\nimport inherits from 'inherits';\nimport EE from 'events';\n\nfunction mangle(key) {\n return '$' + key;\n}\nfunction unmangle(key) {\n return key.substring(1);\n}\nfunction Map$1() {\n this._store = {};\n}\nMap$1.prototype.get = function (key) {\n var mangled = mangle(key);\n return this._store[mangled];\n};\nMap$1.prototype.set = function (key, value) {\n var mangled = mangle(key);\n this._store[mangled] = value;\n return true;\n};\nMap$1.prototype.has = function (key) {\n var mangled = mangle(key);\n return mangled in this._store;\n};\nMap$1.prototype.delete = function (key) {\n var mangled = mangle(key);\n var res = mangled in this._store;\n delete this._store[mangled];\n return res;\n};\nMap$1.prototype.forEach = function (cb) {\n var keys = Object.keys(this._store);\n for (var i = 0, len = keys.length; i < len; i++) {\n var key = keys[i];\n var value = this._store[key];\n key = unmangle(key);\n cb(value, key);\n }\n};\nObject.defineProperty(Map$1.prototype, 'size', {\n get: function () {\n return Object.keys(this._store).length;\n }\n});\n\nfunction Set$1(array) {\n this._store = new Map$1();\n\n // init with an array\n if (array && Array.isArray(array)) {\n for (var i = 0, len = array.length; i < len; i++) {\n this.add(array[i]);\n }\n }\n}\nSet$1.prototype.add = function (key) {\n return this._store.set(key, true);\n};\nSet$1.prototype.has = function (key) {\n return this._store.has(key);\n};\nSet$1.prototype.forEach = function (cb) {\n this._store.forEach(function (value, key) {\n cb(key);\n });\n};\nObject.defineProperty(Set$1.prototype, 'size', {\n get: function () {\n return this._store.size;\n }\n});\n\n/* global Map,Set,Symbol */\n// Based on https://kangax.github.io/compat-table/es6/ we can sniff out\n// incomplete Map/Set implementations which would otherwise cause our tests to fail.\n// Notably they fail in IE11 and iOS 8.4, which this prevents.\nfunction supportsMapAndSet() {\n if (typeof Symbol === 'undefined' || typeof Map === 'undefined' || typeof Set === 'undefined') {\n return false;\n }\n var prop = Object.getOwnPropertyDescriptor(Map, Symbol.species);\n return prop && 'get' in prop && Map[Symbol.species] === Map;\n}\n\n// based on https://github.com/montagejs/collections\n\nvar ExportedSet;\nvar ExportedMap;\n\n{\n if (supportsMapAndSet()) { // prefer built-in Map/Set\n ExportedSet = Set;\n ExportedMap = Map;\n } else { // fall back to our polyfill\n ExportedSet = Set$1;\n ExportedMap = Map$1;\n }\n}\n\nfunction isBinaryObject(object) {\n return (typeof ArrayBuffer !== 'undefined' && object instanceof ArrayBuffer) ||\n (typeof Blob !== 'undefined' && object instanceof Blob);\n}\n\nfunction cloneArrayBuffer(buff) {\n if (typeof buff.slice === 'function') {\n return buff.slice(0);\n }\n // IE10-11 slice() polyfill\n var target = new ArrayBuffer(buff.byteLength);\n var targetArray = new Uint8Array(target);\n var sourceArray = new Uint8Array(buff);\n targetArray.set(sourceArray);\n return target;\n}\n\nfunction cloneBinaryObject(object) {\n if (object instanceof ArrayBuffer) {\n return cloneArrayBuffer(object);\n }\n var size = object.size;\n var type = object.type;\n // Blob\n if (typeof object.slice === 'function') {\n return object.slice(0, size, type);\n }\n // PhantomJS slice() replacement\n return object.webkitSlice(0, size, type);\n}\n\n// most of this is borrowed from lodash.isPlainObject:\n// https://github.com/fis-components/lodash.isplainobject/\n// blob/29c358140a74f252aeb08c9eb28bef86f2217d4a/index.js\n\nvar funcToString = Function.prototype.toString;\nvar objectCtorString = funcToString.call(Object);\n\nfunction isPlainObject(value) {\n var proto = Object.getPrototypeOf(value);\n /* istanbul ignore if */\n if (proto === null) { // not sure when this happens, but I guess it can\n return true;\n }\n var Ctor = proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nfunction clone(object) {\n var newObject;\n var i;\n var len;\n\n if (!object || typeof object !== 'object') {\n return object;\n }\n\n if (Array.isArray(object)) {\n newObject = [];\n for (i = 0, len = object.length; i < len; i++) {\n newObject[i] = clone(object[i]);\n }\n return newObject;\n }\n\n // special case: to avoid inconsistencies between IndexedDB\n // and other backends, we automatically stringify Dates\n if (object instanceof Date) {\n return object.toISOString();\n }\n\n if (isBinaryObject(object)) {\n return cloneBinaryObject(object);\n }\n\n if (!isPlainObject(object)) {\n return object; // don't clone objects like Workers\n }\n\n newObject = {};\n for (i in object) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(object, i)) {\n var value = clone(object[i]);\n if (typeof value !== 'undefined') {\n newObject[i] = value;\n }\n }\n }\n return newObject;\n}\n\nfunction once(fun) {\n var called = false;\n return getArguments(function (args) {\n /* istanbul ignore if */\n if (called) {\n // this is a smoke test and should never actually happen\n throw new Error('once called more than once');\n } else {\n called = true;\n fun.apply(this, args);\n }\n });\n}\n\nfunction toPromise(func) {\n //create the function we will be returning\n return getArguments(function (args) {\n // Clone arguments\n args = clone(args);\n var self = this;\n // if the last argument is a function, assume its a callback\n var usedCB = (typeof args[args.length - 1] === 'function') ? args.pop() : false;\n var promise = new Promise(function (fulfill, reject) {\n var resp;\n try {\n var callback = once(function (err, mesg) {\n if (err) {\n reject(err);\n } else {\n fulfill(mesg);\n }\n });\n // create a callback for this invocation\n // apply the function in the orig context\n args.push(callback);\n resp = func.apply(self, args);\n if (resp && typeof resp.then === 'function') {\n fulfill(resp);\n }\n } catch (e) {\n reject(e);\n }\n });\n // if there is a callback, call it back\n if (usedCB) {\n promise.then(function (result) {\n usedCB(null, result);\n }, usedCB);\n }\n return promise;\n });\n}\n\nfunction logApiCall(self, name, args) {\n /* istanbul ignore if */\n if (self.constructor.listeners('debug').length) {\n var logArgs = ['api', self.name, name];\n for (var i = 0; i < args.length - 1; i++) {\n logArgs.push(args[i]);\n }\n self.constructor.emit('debug', logArgs);\n\n // override the callback itself to log the response\n var origCallback = args[args.length - 1];\n args[args.length - 1] = function (err, res) {\n var responseArgs = ['api', self.name, name];\n responseArgs = responseArgs.concat(\n err ? ['error', err] : ['success', res]\n );\n self.constructor.emit('debug', responseArgs);\n origCallback(err, res);\n };\n }\n}\n\nfunction adapterFun(name, callback) {\n return toPromise(getArguments(function (args) {\n if (this._closed) {\n return Promise.reject(new Error('database is closed'));\n }\n if (this._destroyed) {\n return Promise.reject(new Error('database is destroyed'));\n }\n var self = this;\n logApiCall(self, name, args);\n if (!this.taskqueue.isReady) {\n return new Promise(function (fulfill, reject) {\n self.taskqueue.addTask(function (failed) {\n if (failed) {\n reject(failed);\n } else {\n fulfill(self[name].apply(self, args));\n }\n });\n });\n }\n return callback.apply(this, args);\n }));\n}\n\n// like underscore/lodash _.pick()\nfunction pick(obj, arr) {\n var res = {};\n for (var i = 0, len = arr.length; i < len; i++) {\n var prop = arr[i];\n if (prop in obj) {\n res[prop] = obj[prop];\n }\n }\n return res;\n}\n\n// Most browsers throttle concurrent requests at 6, so it's silly\n// to shim _bulk_get by trying to launch potentially hundreds of requests\n// and then letting the majority time out. We can handle this ourselves.\nvar MAX_NUM_CONCURRENT_REQUESTS = 6;\n\nfunction identityFunction(x) {\n return x;\n}\n\nfunction formatResultForOpenRevsGet(result) {\n return [{\n ok: result\n }];\n}\n\n// shim for P/CouchDB adapters that don't directly implement _bulk_get\nfunction bulkGet(db, opts, callback) {\n var requests = opts.docs;\n\n // consolidate into one request per doc if possible\n var requestsById = new ExportedMap();\n requests.forEach(function (request) {\n if (requestsById.has(request.id)) {\n requestsById.get(request.id).push(request);\n } else {\n requestsById.set(request.id, [request]);\n }\n });\n\n var numDocs = requestsById.size;\n var numDone = 0;\n var perDocResults = new Array(numDocs);\n\n function collapseResultsAndFinish() {\n var results = [];\n perDocResults.forEach(function (res) {\n res.docs.forEach(function (info) {\n results.push({\n id: res.id,\n docs: [info]\n });\n });\n });\n callback(null, {results: results});\n }\n\n function checkDone() {\n if (++numDone === numDocs) {\n collapseResultsAndFinish();\n }\n }\n\n function gotResult(docIndex, id, docs) {\n perDocResults[docIndex] = {id: id, docs: docs};\n checkDone();\n }\n\n var allRequests = [];\n requestsById.forEach(function (value, key) {\n allRequests.push(key);\n });\n\n var i = 0;\n\n function nextBatch() {\n\n if (i >= allRequests.length) {\n return;\n }\n\n var upTo = Math.min(i + MAX_NUM_CONCURRENT_REQUESTS, allRequests.length);\n var batch = allRequests.slice(i, upTo);\n processBatch(batch, i);\n i += batch.length;\n }\n\n function processBatch(batch, offset) {\n batch.forEach(function (docId, j) {\n var docIdx = offset + j;\n var docRequests = requestsById.get(docId);\n\n // just use the first request as the \"template\"\n // TODO: The _bulk_get API allows for more subtle use cases than this,\n // but for now it is unlikely that there will be a mix of different\n // \"atts_since\" or \"attachments\" in the same request, since it's just\n // replicate.js that is using this for the moment.\n // Also, atts_since is aspirational, since we don't support it yet.\n var docOpts = pick(docRequests[0], ['atts_since', 'attachments']);\n docOpts.open_revs = docRequests.map(function (request) {\n // rev is optional, open_revs disallowed\n return request.rev;\n });\n\n // remove falsey / undefined revisions\n docOpts.open_revs = docOpts.open_revs.filter(identityFunction);\n\n var formatResult = identityFunction;\n\n if (docOpts.open_revs.length === 0) {\n delete docOpts.open_revs;\n\n // when fetching only the \"winning\" leaf,\n // transform the result so it looks like an open_revs\n // request\n formatResult = formatResultForOpenRevsGet;\n }\n\n // globally-supplied options\n ['revs', 'attachments', 'binary', 'ajax', 'latest'].forEach(function (param) {\n if (param in opts) {\n docOpts[param] = opts[param];\n }\n });\n db.get(docId, docOpts, function (err, res) {\n var result;\n /* istanbul ignore if */\n if (err) {\n result = [{error: err}];\n } else {\n result = formatResult(res);\n }\n gotResult(docIdx, docId, result);\n nextBatch();\n });\n });\n }\n\n nextBatch();\n\n}\n\nvar hasLocal;\n\ntry {\n localStorage.setItem('_pouch_check_localstorage', 1);\n hasLocal = !!localStorage.getItem('_pouch_check_localstorage');\n} catch (e) {\n hasLocal = false;\n}\n\nfunction hasLocalStorage() {\n return hasLocal;\n}\n\n// Custom nextTick() shim for browsers. In node, this will just be process.nextTick(). We\n\ninherits(Changes, EE);\n\n/* istanbul ignore next */\nfunction attachBrowserEvents(self) {\n if (hasLocalStorage()) {\n addEventListener(\"storage\", function (e) {\n self.emit(e.key);\n });\n }\n}\n\nfunction Changes() {\n EE.call(this);\n this._listeners = {};\n\n attachBrowserEvents(this);\n}\nChanges.prototype.addListener = function (dbName, id, db, opts) {\n /* istanbul ignore if */\n if (this._listeners[id]) {\n return;\n }\n var self = this;\n var inprogress = false;\n function eventFunction() {\n /* istanbul ignore if */\n if (!self._listeners[id]) {\n return;\n }\n if (inprogress) {\n inprogress = 'waiting';\n return;\n }\n inprogress = true;\n var changesOpts = pick(opts, [\n 'style', 'include_docs', 'attachments', 'conflicts', 'filter',\n 'doc_ids', 'view', 'since', 'query_params', 'binary', 'return_docs'\n ]);\n\n /* istanbul ignore next */\n function onError() {\n inprogress = false;\n }\n\n db.changes(changesOpts).on('change', function (c) {\n if (c.seq > opts.since && !opts.cancelled) {\n opts.since = c.seq;\n opts.onChange(c);\n }\n }).on('complete', function () {\n if (inprogress === 'waiting') {\n immediate(eventFunction);\n }\n inprogress = false;\n }).on('error', onError);\n }\n this._listeners[id] = eventFunction;\n this.on(dbName, eventFunction);\n};\n\nChanges.prototype.removeListener = function (dbName, id) {\n /* istanbul ignore if */\n if (!(id in this._listeners)) {\n return;\n }\n EE.prototype.removeListener.call(this, dbName,\n this._listeners[id]);\n delete this._listeners[id];\n};\n\n\n/* istanbul ignore next */\nChanges.prototype.notifyLocalWindows = function (dbName) {\n //do a useless change on a storage thing\n //in order to get other windows's listeners to activate\n if (hasLocalStorage()) {\n localStorage[dbName] = (localStorage[dbName] === \"a\") ? \"b\" : \"a\";\n }\n};\n\nChanges.prototype.notify = function (dbName) {\n this.emit(dbName);\n this.notifyLocalWindows(dbName);\n};\n\nfunction guardedConsole(method) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined' && typeof console[method] === 'function') {\n var args = Array.prototype.slice.call(arguments, 1);\n console[method].apply(console, args);\n }\n}\n\nfunction randomNumber(min, max) {\n var maxTimeout = 600000; // Hard-coded default of 10 minutes\n min = parseInt(min, 10) || 0;\n max = parseInt(max, 10);\n if (max !== max || max <= min) {\n max = (min || 1) << 1; //doubling\n } else {\n max = max + 1;\n }\n // In order to not exceed maxTimeout, pick a random value between half of maxTimeout and maxTimeout\n if (max > maxTimeout) {\n min = maxTimeout >> 1; // divide by two\n max = maxTimeout;\n }\n var ratio = Math.random();\n var range = max - min;\n\n return ~~(range * ratio + min); // ~~ coerces to an int, but fast.\n}\n\nfunction defaultBackOff(min) {\n var max = 0;\n if (!min) {\n max = 2000;\n }\n return randomNumber(min, max);\n}\n\n// designed to give info to browser users, who are disturbed\n// when they see http errors in the console\nfunction explainError(status, str) {\n guardedConsole('info', 'The above ' + status + ' is totally normal. ' + str);\n}\n\nvar assign;\n{\n if (typeof Object.assign === 'function') {\n assign = Object.assign;\n } else {\n // lite Object.assign polyfill based on\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n assign = function (target) {\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) { // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\n\nvar $inject_Object_assign = assign;\n\ninherits(PouchError, Error);\n\nfunction PouchError(status, error, reason) {\n Error.call(this, reason);\n this.status = status;\n this.name = error;\n this.message = reason;\n this.error = true;\n}\n\nPouchError.prototype.toString = function () {\n return JSON.stringify({\n status: this.status,\n name: this.name,\n message: this.message,\n reason: this.reason\n });\n};\n\nvar UNAUTHORIZED = new PouchError(401, 'unauthorized', \"Name or password is incorrect.\");\nvar MISSING_BULK_DOCS = new PouchError(400, 'bad_request', \"Missing JSON list of 'docs'\");\nvar MISSING_DOC = new PouchError(404, 'not_found', 'missing');\nvar REV_CONFLICT = new PouchError(409, 'conflict', 'Document update conflict');\nvar INVALID_ID = new PouchError(400, 'bad_request', '_id field must contain a string');\nvar MISSING_ID = new PouchError(412, 'missing_id', '_id is required for puts');\nvar RESERVED_ID = new PouchError(400, 'bad_request', 'Only reserved document ids may start with underscore.');\nvar NOT_OPEN = new PouchError(412, 'precondition_failed', 'Database not open');\nvar UNKNOWN_ERROR = new PouchError(500, 'unknown_error', 'Database encountered an unknown error');\nvar BAD_ARG = new PouchError(500, 'badarg', 'Some query argument is invalid');\nvar INVALID_REQUEST = new PouchError(400, 'invalid_request', 'Request was invalid');\nvar QUERY_PARSE_ERROR = new PouchError(400, 'query_parse_error', 'Some query parameter is invalid');\nvar DOC_VALIDATION = new PouchError(500, 'doc_validation', 'Bad special document member');\nvar BAD_REQUEST = new PouchError(400, 'bad_request', 'Something wrong with the request');\nvar NOT_AN_OBJECT = new PouchError(400, 'bad_request', 'Document must be a JSON object');\nvar DB_MISSING = new PouchError(404, 'not_found', 'Database not found');\nvar IDB_ERROR = new PouchError(500, 'indexed_db_went_bad', 'unknown');\nvar WSQ_ERROR = new PouchError(500, 'web_sql_went_bad', 'unknown');\nvar LDB_ERROR = new PouchError(500, 'levelDB_went_went_bad', 'unknown');\nvar FORBIDDEN = new PouchError(403, 'forbidden', 'Forbidden by design doc validate_doc_update function');\nvar INVALID_REV = new PouchError(400, 'bad_request', 'Invalid rev format');\nvar FILE_EXISTS = new PouchError(412, 'file_exists', 'The database could not be created, the file already exists.');\nvar MISSING_STUB = new PouchError(412, 'missing_stub', 'A pre-existing attachment stub wasn\\'t found');\nvar INVALID_URL = new PouchError(413, 'invalid_url', 'Provided URL is invalid');\n\nfunction createError(error, reason) {\n function CustomPouchError(reason) {\n // inherit error properties from our parent error manually\n // so as to allow proper JSON parsing.\n /* jshint ignore:start */\n var names = Object.getOwnPropertyNames(error);\n for (var i = 0, len = names.length; i < len; i++) {\n if (typeof error[names[i]] !== 'function') {\n this[names[i]] = error[names[i]];\n }\n }\n /* jshint ignore:end */\n if (reason !== undefined) {\n this.reason = reason;\n }\n }\n CustomPouchError.prototype = PouchError.prototype;\n return new CustomPouchError(reason);\n}\n\nfunction generateErrorFromResponse(err) {\n\n if (typeof err !== 'object') {\n var data = err;\n err = UNKNOWN_ERROR;\n err.data = data;\n }\n\n if ('error' in err && err.error === 'conflict') {\n err.name = 'conflict';\n err.status = 409;\n }\n\n if (!('name' in err)) {\n err.name = err.error || 'unknown';\n }\n\n if (!('status' in err)) {\n err.status = 500;\n }\n\n if (!('message' in err)) {\n err.message = err.message || err.reason;\n }\n\n return err;\n}\n\nfunction tryFilter(filter, doc, req) {\n try {\n return !filter(doc, req);\n } catch (err) {\n var msg = 'Filter function threw: ' + err.toString();\n return createError(BAD_REQUEST, msg);\n }\n}\n\nfunction filterChange(opts) {\n var req = {};\n var hasFilter = opts.filter && typeof opts.filter === 'function';\n req.query = opts.query_params;\n\n return function filter(change) {\n if (!change.doc) {\n // CSG sends events on the changes feed that don't have documents,\n // this hack makes a whole lot of existing code robust.\n change.doc = {};\n }\n\n var filterReturn = hasFilter && tryFilter(opts.filter, change.doc, req);\n\n if (typeof filterReturn === 'object') {\n return filterReturn;\n }\n\n if (filterReturn) {\n return false;\n }\n\n if (!opts.include_docs) {\n delete change.doc;\n } else if (!opts.attachments) {\n for (var att in change.doc._attachments) {\n /* istanbul ignore else */\n if (change.doc._attachments.hasOwnProperty(att)) {\n change.doc._attachments[att].stub = true;\n }\n }\n }\n return true;\n };\n}\n\nfunction flatten(arrs) {\n var res = [];\n for (var i = 0, len = arrs.length; i < len; i++) {\n res = res.concat(arrs[i]);\n }\n return res;\n}\n\n// shim for Function.prototype.name,\n\n// Determine id an ID is valid\n// - invalid IDs begin with an underescore that does not begin '_design' or\n// '_local'\n// - any other string value is a valid id\n// Returns the specific error object for each case\nfunction invalidIdError(id) {\n var err;\n if (!id) {\n err = createError(MISSING_ID);\n } else if (typeof id !== 'string') {\n err = createError(INVALID_ID);\n } else if (/^_/.test(id) && !(/^_(design|local)/).test(id)) {\n err = createError(RESERVED_ID);\n }\n if (err) {\n throw err;\n }\n}\n\n// Checks if a PouchDB object is \"remote\" or not. This is\n\nfunction isRemote(db) {\n if (typeof db._remote === 'boolean') {\n return db._remote;\n }\n /* istanbul ignore next */\n if (typeof db.type === 'function') {\n guardedConsole('warn',\n 'db.type() is deprecated and will be removed in ' +\n 'a future version of PouchDB');\n return db.type() === 'http';\n }\n /* istanbul ignore next */\n return false;\n}\n\nfunction listenerCount(ee, type) {\n return 'listenerCount' in ee ? ee.listenerCount(type) :\n EE.listenerCount(ee, type);\n}\n\nfunction parseDesignDocFunctionName(s) {\n if (!s) {\n return null;\n }\n var parts = s.split('/');\n if (parts.length === 2) {\n return parts;\n }\n if (parts.length === 1) {\n return [s, s];\n }\n return null;\n}\n\nfunction normalizeDesignDocFunctionName(s) {\n var normalized = parseDesignDocFunctionName(s);\n return normalized ? normalized.join('/') : null;\n}\n\n// originally parseUri 1.2.2, now patched by us\n// (c) Steven Levithan \n// MIT License\nvar keys = [\"source\", \"protocol\", \"authority\", \"userInfo\", \"user\", \"password\",\n \"host\", \"port\", \"relative\", \"path\", \"directory\", \"file\", \"query\", \"anchor\"];\nvar qName =\"queryKey\";\nvar qParser = /(?:^|&)([^&=]*)=?([^&]*)/g;\n\n// use the \"loose\" parser\n/* eslint maxlen: 0, no-useless-escape: 0 */\nvar parser = /^(?:(?![^:@]+:[^:@\\/]*@)([^:\\/?#.]+):)?(?:\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\n\nfunction parseUri(str) {\n var m = parser.exec(str);\n var uri = {};\n var i = 14;\n\n while (i--) {\n var key = keys[i];\n var value = m[i] || \"\";\n var encoded = ['user', 'password'].indexOf(key) !== -1;\n uri[key] = encoded ? decodeURIComponent(value) : value;\n }\n\n uri[qName] = {};\n uri[keys[12]].replace(qParser, function ($0, $1, $2) {\n if ($1) {\n uri[qName][$1] = $2;\n }\n });\n\n return uri;\n}\n\n// Based on https://github.com/alexdavid/scope-eval v0.0.3\n// (source: https://unpkg.com/scope-eval@0.0.3/scope_eval.js)\n// This is basically just a wrapper around new Function()\n\nfunction scopeEval(source, scope) {\n var keys = [];\n var values = [];\n for (var key in scope) {\n if (scope.hasOwnProperty(key)) {\n keys.push(key);\n values.push(scope[key]);\n }\n }\n keys.push(source);\n return Function.apply(null, keys).apply(null, values);\n}\n\n// this is essentially the \"update sugar\" function from daleharvey/pouchdb#1388\n// the diffFun tells us what delta to apply to the doc. it either returns\n// the doc, or false if it doesn't need to do an update after all\nfunction upsert(db, docId, diffFun) {\n return new Promise(function (fulfill, reject) {\n db.get(docId, function (err, doc) {\n if (err) {\n /* istanbul ignore next */\n if (err.status !== 404) {\n return reject(err);\n }\n doc = {};\n }\n\n // the user might change the _rev, so save it for posterity\n var docRev = doc._rev;\n var newDoc = diffFun(doc);\n\n if (!newDoc) {\n // if the diffFun returns falsy, we short-circuit as\n // an optimization\n return fulfill({updated: false, rev: docRev});\n }\n\n // users aren't allowed to modify these values,\n // so reset them here\n newDoc._id = docId;\n newDoc._rev = docRev;\n fulfill(tryAndPut(db, newDoc, diffFun));\n });\n });\n}\n\nfunction tryAndPut(db, doc, diffFun) {\n return db.put(doc).then(function (res) {\n return {\n updated: true,\n rev: res.rev\n };\n }, function (err) {\n /* istanbul ignore next */\n if (err.status !== 409) {\n throw err;\n }\n return upsert(db, doc._id, diffFun);\n });\n}\n\nvar thisAtob = function (str) {\n return atob(str);\n};\n\nvar thisBtoa = function (str) {\n return btoa(str);\n};\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor (e.g.\n// old QtWebKit versions, Android < 4.4).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== \"TypeError\") {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder :\n typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder :\n typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder :\n WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction binaryStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\nfunction binStringToBluffer(binString, type) {\n return createBlob([binaryStringToArrayBuffer(binString)], {type: type});\n}\n\nfunction b64ToBluffer(b64, type) {\n return binStringToBluffer(thisAtob(b64), type);\n}\n\n//Can't find original post, but this is close\n//http://stackoverflow.com/questions/6965107/ (continues on next line)\n//converting-between-strings-and-arraybuffers\nfunction arrayBufferToBinaryString(buffer) {\n var binary = '';\n var bytes = new Uint8Array(buffer);\n var length = bytes.byteLength;\n for (var i = 0; i < length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return binary;\n}\n\n// shim for browsers that don't support it\nfunction readAsBinaryString(blob, callback) {\n var reader = new FileReader();\n var hasBinaryString = typeof reader.readAsBinaryString === 'function';\n reader.onloadend = function (e) {\n var result = e.target.result || '';\n if (hasBinaryString) {\n return callback(result);\n }\n callback(arrayBufferToBinaryString(result));\n };\n if (hasBinaryString) {\n reader.readAsBinaryString(blob);\n } else {\n reader.readAsArrayBuffer(blob);\n }\n}\n\nfunction blobToBinaryString(blobOrBuffer, callback) {\n readAsBinaryString(blobOrBuffer, function (bin) {\n callback(bin);\n });\n}\n\nfunction blobToBase64(blobOrBuffer, callback) {\n blobToBinaryString(blobOrBuffer, function (base64) {\n callback(thisBtoa(base64));\n });\n}\n\n// simplified API. universal browser support is assumed\nfunction readAsArrayBuffer(blob, callback) {\n var reader = new FileReader();\n reader.onloadend = function (e) {\n var result = e.target.result || new ArrayBuffer(0);\n callback(result);\n };\n reader.readAsArrayBuffer(blob);\n}\n\n// this is not used in the browser\n\nvar setImmediateShim = self.setImmediate || self.setTimeout;\nvar MD5_CHUNK_SIZE = 32768;\n\nfunction rawToBase64(raw) {\n return thisBtoa(raw);\n}\n\nfunction sliceBlob(blob, start, end) {\n if (blob.webkitSlice) {\n return blob.webkitSlice(start, end);\n }\n return blob.slice(start, end);\n}\n\nfunction appendBlob(buffer, blob, start, end, callback) {\n if (start > 0 || end < blob.size) {\n // only slice blob if we really need to\n blob = sliceBlob(blob, start, end);\n }\n readAsArrayBuffer(blob, function (arrayBuffer) {\n buffer.append(arrayBuffer);\n callback();\n });\n}\n\nfunction appendString(buffer, string, start, end, callback) {\n if (start > 0 || end < string.length) {\n // only create a substring if we really need to\n string = string.substring(start, end);\n }\n buffer.appendBinary(string);\n callback();\n}\n\nfunction binaryMd5(data, callback) {\n var inputIsString = typeof data === 'string';\n var len = inputIsString ? data.length : data.size;\n var chunkSize = Math.min(MD5_CHUNK_SIZE, len);\n var chunks = Math.ceil(len / chunkSize);\n var currentChunk = 0;\n var buffer = inputIsString ? new Md5() : new Md5.ArrayBuffer();\n\n var append = inputIsString ? appendString : appendBlob;\n\n function next() {\n setImmediateShim(loadNextChunk);\n }\n\n function done() {\n var raw = buffer.end(true);\n var base64 = rawToBase64(raw);\n callback(base64);\n buffer.destroy();\n }\n\n function loadNextChunk() {\n var start = currentChunk * chunkSize;\n var end = start + chunkSize;\n currentChunk++;\n if (currentChunk < chunks) {\n append(buffer, data, start, end, next);\n } else {\n append(buffer, data, start, end, done);\n }\n }\n loadNextChunk();\n}\n\nfunction stringMd5(string) {\n return Md5.hash(string);\n}\n\nfunction rev(doc, deterministic_revs) {\n var clonedDoc = clone(doc);\n if (!deterministic_revs) {\n return v4().replace(/-/g, '').toLowerCase();\n }\n\n delete clonedDoc._rev_tree;\n return stringMd5(JSON.stringify(clonedDoc));\n}\n\nvar uuid = v4; // mimic old import, only v4 is ever used elsewhere\n\n// We fetch all leafs of the revision tree, and sort them based on tree length\n// and whether they were deleted, undeleted documents with the longest revision\n// tree (most edits) win\n// The final sort algorithm is slightly documented in a sidebar here:\n// http://guide.couchdb.org/draft/conflicts.html\nfunction winningRev(metadata) {\n var winningId;\n var winningPos;\n var winningDeleted;\n var toVisit = metadata.rev_tree.slice();\n var node;\n while ((node = toVisit.pop())) {\n var tree = node.ids;\n var branches = tree[2];\n var pos = node.pos;\n if (branches.length) { // non-leaf\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i]});\n }\n continue;\n }\n var deleted = !!tree[1].deleted;\n var id = tree[0];\n // sort by deleted, then pos, then id\n if (!winningId || (winningDeleted !== deleted ? winningDeleted :\n winningPos !== pos ? winningPos < pos : winningId < id)) {\n winningId = id;\n winningPos = pos;\n winningDeleted = deleted;\n }\n }\n\n return winningPos + '-' + winningId;\n}\n\n// Pretty much all below can be combined into a higher order function to\n// traverse revisions\n// The return value from the callback will be passed as context to all\n// children of that node\nfunction traverseRevTree(revs, callback) {\n var toVisit = revs.slice();\n\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var branches = tree[2];\n var newCtx =\n callback(branches.length === 0, pos, tree[0], node.ctx, tree[1]);\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i], ctx: newCtx});\n }\n }\n}\n\nfunction sortByPos(a, b) {\n return a.pos - b.pos;\n}\n\nfunction collectLeaves(revs) {\n var leaves = [];\n traverseRevTree(revs, function (isLeaf, pos, id, acc, opts) {\n if (isLeaf) {\n leaves.push({rev: pos + \"-\" + id, pos: pos, opts: opts});\n }\n });\n leaves.sort(sortByPos).reverse();\n for (var i = 0, len = leaves.length; i < len; i++) {\n delete leaves[i].pos;\n }\n return leaves;\n}\n\n// returns revs of all conflicts that is leaves such that\n// 1. are not deleted and\n// 2. are different than winning revision\nfunction collectConflicts(metadata) {\n var win = winningRev(metadata);\n var leaves = collectLeaves(metadata.rev_tree);\n var conflicts = [];\n for (var i = 0, len = leaves.length; i < len; i++) {\n var leaf = leaves[i];\n if (leaf.rev !== win && !leaf.opts.deleted) {\n conflicts.push(leaf.rev);\n }\n }\n return conflicts;\n}\n\n// compact a tree by marking its non-leafs as missing,\n// and return a list of revs to delete\nfunction compactTree(metadata) {\n var revs = [];\n traverseRevTree(metadata.rev_tree, function (isLeaf, pos,\n revHash, ctx, opts) {\n if (opts.status === 'available' && !isLeaf) {\n revs.push(pos + '-' + revHash);\n opts.status = 'missing';\n }\n });\n return revs;\n}\n\n// build up a list of all the paths to the leafs in this revision tree\nfunction rootToLeaf(revs) {\n var paths = [];\n var toVisit = revs.slice();\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var id = tree[0];\n var opts = tree[1];\n var branches = tree[2];\n var isLeaf = branches.length === 0;\n\n var history = node.history ? node.history.slice() : [];\n history.push({id: id, opts: opts});\n if (isLeaf) {\n paths.push({pos: (pos + 1 - history.length), ids: history});\n }\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: pos + 1, ids: branches[i], history: history});\n }\n }\n return paths.reverse();\n}\n\n// for a better overview of what this is doing, read:\n\nfunction sortByPos$1(a, b) {\n return a.pos - b.pos;\n}\n\n// classic binary search\nfunction binarySearch(arr, item, comparator) {\n var low = 0;\n var high = arr.length;\n var mid;\n while (low < high) {\n mid = (low + high) >>> 1;\n if (comparator(arr[mid], item) < 0) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return low;\n}\n\n// assuming the arr is sorted, insert the item in the proper place\nfunction insertSorted(arr, item, comparator) {\n var idx = binarySearch(arr, item, comparator);\n arr.splice(idx, 0, item);\n}\n\n// Turn a path as a flat array into a tree with a single branch.\n// If any should be stemmed from the beginning of the array, that's passed\n// in as the second argument\nfunction pathToTree(path, numStemmed) {\n var root;\n var leaf;\n for (var i = numStemmed, len = path.length; i < len; i++) {\n var node = path[i];\n var currentLeaf = [node.id, node.opts, []];\n if (leaf) {\n leaf[2].push(currentLeaf);\n leaf = currentLeaf;\n } else {\n root = leaf = currentLeaf;\n }\n }\n return root;\n}\n\n// compare the IDs of two trees\nfunction compareTree(a, b) {\n return a[0] < b[0] ? -1 : 1;\n}\n\n// Merge two trees together\n// The roots of tree1 and tree2 must be the same revision\nfunction mergeTree(in_tree1, in_tree2) {\n var queue = [{tree1: in_tree1, tree2: in_tree2}];\n var conflicts = false;\n while (queue.length > 0) {\n var item = queue.pop();\n var tree1 = item.tree1;\n var tree2 = item.tree2;\n\n if (tree1[1].status || tree2[1].status) {\n tree1[1].status =\n (tree1[1].status === 'available' ||\n tree2[1].status === 'available') ? 'available' : 'missing';\n }\n\n for (var i = 0; i < tree2[2].length; i++) {\n if (!tree1[2][0]) {\n conflicts = 'new_leaf';\n tree1[2][0] = tree2[2][i];\n continue;\n }\n\n var merged = false;\n for (var j = 0; j < tree1[2].length; j++) {\n if (tree1[2][j][0] === tree2[2][i][0]) {\n queue.push({tree1: tree1[2][j], tree2: tree2[2][i]});\n merged = true;\n }\n }\n if (!merged) {\n conflicts = 'new_branch';\n insertSorted(tree1[2], tree2[2][i], compareTree);\n }\n }\n }\n return {conflicts: conflicts, tree: in_tree1};\n}\n\nfunction doMerge(tree, path, dontExpand) {\n var restree = [];\n var conflicts = false;\n var merged = false;\n var res;\n\n if (!tree.length) {\n return {tree: [path], conflicts: 'new_leaf'};\n }\n\n for (var i = 0, len = tree.length; i < len; i++) {\n var branch = tree[i];\n if (branch.pos === path.pos && branch.ids[0] === path.ids[0]) {\n // Paths start at the same position and have the same root, so they need\n // merged\n res = mergeTree(branch.ids, path.ids);\n restree.push({pos: branch.pos, ids: res.tree});\n conflicts = conflicts || res.conflicts;\n merged = true;\n } else if (dontExpand !== true) {\n // The paths start at a different position, take the earliest path and\n // traverse up until it as at the same point from root as the path we\n // want to merge. If the keys match we return the longer path with the\n // other merged After stemming we dont want to expand the trees\n\n var t1 = branch.pos < path.pos ? branch : path;\n var t2 = branch.pos < path.pos ? path : branch;\n var diff = t2.pos - t1.pos;\n\n var candidateParents = [];\n\n var trees = [];\n trees.push({ids: t1.ids, diff: diff, parent: null, parentIdx: null});\n while (trees.length > 0) {\n var item = trees.pop();\n if (item.diff === 0) {\n if (item.ids[0] === t2.ids[0]) {\n candidateParents.push(item);\n }\n continue;\n }\n var elements = item.ids[2];\n for (var j = 0, elementsLen = elements.length; j < elementsLen; j++) {\n trees.push({\n ids: elements[j],\n diff: item.diff - 1,\n parent: item.ids,\n parentIdx: j\n });\n }\n }\n\n var el = candidateParents[0];\n\n if (!el) {\n restree.push(branch);\n } else {\n res = mergeTree(el.ids, t2.ids);\n el.parent[2][el.parentIdx] = res.tree;\n restree.push({pos: t1.pos, ids: t1.ids});\n conflicts = conflicts || res.conflicts;\n merged = true;\n }\n } else {\n restree.push(branch);\n }\n }\n\n // We didnt find\n if (!merged) {\n restree.push(path);\n }\n\n restree.sort(sortByPos$1);\n\n return {\n tree: restree,\n conflicts: conflicts || 'internal_node'\n };\n}\n\n// To ensure we dont grow the revision tree infinitely, we stem old revisions\nfunction stem(tree, depth) {\n // First we break out the tree into a complete list of root to leaf paths\n var paths = rootToLeaf(tree);\n var stemmedRevs;\n\n var result;\n for (var i = 0, len = paths.length; i < len; i++) {\n // Then for each path, we cut off the start of the path based on the\n // `depth` to stem to, and generate a new set of flat trees\n var path = paths[i];\n var stemmed = path.ids;\n var node;\n if (stemmed.length > depth) {\n // only do the stemming work if we actually need to stem\n if (!stemmedRevs) {\n stemmedRevs = {}; // avoid allocating this object unnecessarily\n }\n var numStemmed = stemmed.length - depth;\n node = {\n pos: path.pos + numStemmed,\n ids: pathToTree(stemmed, numStemmed)\n };\n\n for (var s = 0; s < numStemmed; s++) {\n var rev = (path.pos + s) + '-' + stemmed[s].id;\n stemmedRevs[rev] = true;\n }\n } else { // no need to actually stem\n node = {\n pos: path.pos,\n ids: pathToTree(stemmed, 0)\n };\n }\n\n // Then we remerge all those flat trees together, ensuring that we dont\n // connect trees that would go beyond the depth limit\n if (result) {\n result = doMerge(result, node, true).tree;\n } else {\n result = [node];\n }\n }\n\n // this is memory-heavy per Chrome profiler, avoid unless we actually stemmed\n if (stemmedRevs) {\n traverseRevTree(result, function (isLeaf, pos, revHash) {\n // some revisions may have been removed in a branch but not in another\n delete stemmedRevs[pos + '-' + revHash];\n });\n }\n\n return {\n tree: result,\n revs: stemmedRevs ? Object.keys(stemmedRevs) : []\n };\n}\n\nfunction merge(tree, path, depth) {\n var newTree = doMerge(tree, path);\n var stemmed = stem(newTree.tree, depth);\n return {\n tree: stemmed.tree,\n stemmedRevs: stemmed.revs,\n conflicts: newTree.conflicts\n };\n}\n\n// return true if a rev exists in the rev tree, false otherwise\nfunction revExists(revs, rev) {\n var toVisit = revs.slice();\n var splitRev = rev.split('-');\n var targetPos = parseInt(splitRev[0], 10);\n var targetId = splitRev[1];\n\n var node;\n while ((node = toVisit.pop())) {\n if (node.pos === targetPos && node.ids[0] === targetId) {\n return true;\n }\n var branches = node.ids[2];\n for (var i = 0, len = branches.length; i < len; i++) {\n toVisit.push({pos: node.pos + 1, ids: branches[i]});\n }\n }\n return false;\n}\n\nfunction getTrees(node) {\n return node.ids;\n}\n\n// check if a specific revision of a doc has been deleted\n// - metadata: the metadata object from the doc store\n// - rev: (optional) the revision to check. defaults to winning revision\nfunction isDeleted(metadata, rev) {\n if (!rev) {\n rev = winningRev(metadata);\n }\n var id = rev.substring(rev.indexOf('-') + 1);\n var toVisit = metadata.rev_tree.map(getTrees);\n\n var tree;\n while ((tree = toVisit.pop())) {\n if (tree[0] === id) {\n return !!tree[1].deleted;\n }\n toVisit = toVisit.concat(tree[2]);\n }\n}\n\nfunction isLocalId(id) {\n return (/^_local/).test(id);\n}\n\n// returns the current leaf node for a given revision\nfunction latest(rev, metadata) {\n var toVisit = metadata.rev_tree.slice();\n var node;\n while ((node = toVisit.pop())) {\n var pos = node.pos;\n var tree = node.ids;\n var id = tree[0];\n var opts = tree[1];\n var branches = tree[2];\n var isLeaf = branches.length === 0;\n\n var history = node.history ? node.history.slice() : [];\n history.push({id: id, pos: pos, opts: opts});\n\n if (isLeaf) {\n for (var i = 0, len = history.length; i < len; i++) {\n var historyNode = history[i];\n var historyRev = historyNode.pos + '-' + historyNode.id;\n\n if (historyRev === rev) {\n // return the rev of this leaf\n return pos + '-' + id;\n }\n }\n }\n\n for (var j = 0, l = branches.length; j < l; j++) {\n toVisit.push({pos: pos + 1, ids: branches[j], history: history});\n }\n }\n\n /* istanbul ignore next */\n throw new Error('Unable to resolve latest revision for id ' + metadata.id + ', rev ' + rev);\n}\n\ninherits(Changes$1, EE);\n\nfunction tryCatchInChangeListener(self, change, pending, lastSeq) {\n // isolate try/catches to avoid V8 deoptimizations\n try {\n self.emit('change', change, pending, lastSeq);\n } catch (e) {\n guardedConsole('error', 'Error in .on(\"change\", function):', e);\n }\n}\n\nfunction Changes$1(db, opts, callback) {\n EE.call(this);\n var self = this;\n this.db = db;\n opts = opts ? clone(opts) : {};\n var complete = opts.complete = once(function (err, resp) {\n if (err) {\n if (listenerCount(self, 'error') > 0) {\n self.emit('error', err);\n }\n } else {\n self.emit('complete', resp);\n }\n self.removeAllListeners();\n db.removeListener('destroyed', onDestroy);\n });\n if (callback) {\n self.on('complete', function (resp) {\n callback(null, resp);\n });\n self.on('error', callback);\n }\n function onDestroy() {\n self.cancel();\n }\n db.once('destroyed', onDestroy);\n\n opts.onChange = function (change, pending, lastSeq) {\n /* istanbul ignore if */\n if (self.isCancelled) {\n return;\n }\n tryCatchInChangeListener(self, change, pending, lastSeq);\n };\n\n var promise = new Promise(function (fulfill, reject) {\n opts.complete = function (err, res) {\n if (err) {\n reject(err);\n } else {\n fulfill(res);\n }\n };\n });\n self.once('cancel', function () {\n db.removeListener('destroyed', onDestroy);\n opts.complete(null, {status: 'cancelled'});\n });\n this.then = promise.then.bind(promise);\n this['catch'] = promise['catch'].bind(promise);\n this.then(function (result) {\n complete(null, result);\n }, complete);\n\n\n\n if (!db.taskqueue.isReady) {\n db.taskqueue.addTask(function (failed) {\n if (failed) {\n opts.complete(failed);\n } else if (self.isCancelled) {\n self.emit('cancel');\n } else {\n self.validateChanges(opts);\n }\n });\n } else {\n self.validateChanges(opts);\n }\n}\nChanges$1.prototype.cancel = function () {\n this.isCancelled = true;\n if (this.db.taskqueue.isReady) {\n this.emit('cancel');\n }\n};\nfunction processChange(doc, metadata, opts) {\n var changeList = [{rev: doc._rev}];\n if (opts.style === 'all_docs') {\n changeList = collectLeaves(metadata.rev_tree)\n .map(function (x) { return {rev: x.rev}; });\n }\n var change = {\n id: metadata.id,\n changes: changeList,\n doc: doc\n };\n\n if (isDeleted(metadata, doc._rev)) {\n change.deleted = true;\n }\n if (opts.conflicts) {\n change.doc._conflicts = collectConflicts(metadata);\n if (!change.doc._conflicts.length) {\n delete change.doc._conflicts;\n }\n }\n return change;\n}\n\nChanges$1.prototype.validateChanges = function (opts) {\n var callback = opts.complete;\n var self = this;\n\n /* istanbul ignore else */\n if (PouchDB._changesFilterPlugin) {\n PouchDB._changesFilterPlugin.validate(opts, function (err) {\n if (err) {\n return callback(err);\n }\n self.doChanges(opts);\n });\n } else {\n self.doChanges(opts);\n }\n};\n\nChanges$1.prototype.doChanges = function (opts) {\n var self = this;\n var callback = opts.complete;\n\n opts = clone(opts);\n if ('live' in opts && !('continuous' in opts)) {\n opts.continuous = opts.live;\n }\n opts.processChange = processChange;\n\n if (opts.since === 'latest') {\n opts.since = 'now';\n }\n if (!opts.since) {\n opts.since = 0;\n }\n if (opts.since === 'now') {\n this.db.info().then(function (info) {\n /* istanbul ignore if */\n if (self.isCancelled) {\n callback(null, {status: 'cancelled'});\n return;\n }\n opts.since = info.update_seq;\n self.doChanges(opts);\n }, callback);\n return;\n }\n\n /* istanbul ignore else */\n if (PouchDB._changesFilterPlugin) {\n PouchDB._changesFilterPlugin.normalize(opts);\n if (PouchDB._changesFilterPlugin.shouldFilter(this, opts)) {\n return PouchDB._changesFilterPlugin.filter(this, opts);\n }\n } else {\n ['doc_ids', 'filter', 'selector', 'view'].forEach(function (key) {\n if (key in opts) {\n guardedConsole('warn',\n 'The \"' + key + '\" option was passed in to changes/replicate, ' +\n 'but pouchdb-changes-filter plugin is not installed, so it ' +\n 'was ignored. Please install the plugin to enable filtering.'\n );\n }\n });\n }\n\n if (!('descending' in opts)) {\n opts.descending = false;\n }\n\n // 0 and 1 should return 1 document\n opts.limit = opts.limit === 0 ? 1 : opts.limit;\n opts.complete = callback;\n var newPromise = this.db._changes(opts);\n /* istanbul ignore else */\n if (newPromise && typeof newPromise.cancel === 'function') {\n var cancel = self.cancel;\n self.cancel = getArguments(function (args) {\n newPromise.cancel();\n cancel.apply(this, args);\n });\n }\n};\n\n/*\n * A generic pouch adapter\n */\n\nfunction compare(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\n// Wrapper for functions that call the bulkdocs api with a single doc,\n// if the first result is an error, return an error\nfunction yankError(callback, docId) {\n return function (err, results) {\n if (err || (results[0] && results[0].error)) {\n err = err || results[0];\n err.docId = docId;\n callback(err);\n } else {\n callback(null, results.length ? results[0] : results);\n }\n };\n}\n\n// clean docs given to us by the user\nfunction cleanDocs(docs) {\n for (var i = 0; i < docs.length; i++) {\n var doc = docs[i];\n if (doc._deleted) {\n delete doc._attachments; // ignore atts for deleted docs\n } else if (doc._attachments) {\n // filter out extraneous keys from _attachments\n var atts = Object.keys(doc._attachments);\n for (var j = 0; j < atts.length; j++) {\n var att = atts[j];\n doc._attachments[att] = pick(doc._attachments[att],\n ['data', 'digest', 'content_type', 'length', 'revpos', 'stub']);\n }\n }\n }\n}\n\n// compare two docs, first by _id then by _rev\nfunction compareByIdThenRev(a, b) {\n var idCompare = compare(a._id, b._id);\n if (idCompare !== 0) {\n return idCompare;\n }\n var aStart = a._revisions ? a._revisions.start : 0;\n var bStart = b._revisions ? b._revisions.start : 0;\n return compare(aStart, bStart);\n}\n\n// for every node in a revision tree computes its distance from the closest\n// leaf\nfunction computeHeight(revs) {\n var height = {};\n var edges = [];\n traverseRevTree(revs, function (isLeaf, pos, id, prnt) {\n var rev$$1 = pos + \"-\" + id;\n if (isLeaf) {\n height[rev$$1] = 0;\n }\n if (prnt !== undefined) {\n edges.push({from: prnt, to: rev$$1});\n }\n return rev$$1;\n });\n\n edges.reverse();\n edges.forEach(function (edge) {\n if (height[edge.from] === undefined) {\n height[edge.from] = 1 + height[edge.to];\n } else {\n height[edge.from] = Math.min(height[edge.from], 1 + height[edge.to]);\n }\n });\n return height;\n}\n\nfunction allDocsKeysParse(opts) {\n var keys = ('limit' in opts) ?\n opts.keys.slice(opts.skip, opts.limit + opts.skip) :\n (opts.skip > 0) ? opts.keys.slice(opts.skip) : opts.keys;\n opts.keys = keys;\n opts.skip = 0;\n delete opts.limit;\n if (opts.descending) {\n keys.reverse();\n opts.descending = false;\n }\n}\n\n// all compaction is done in a queue, to avoid attaching\n// too many listeners at once\nfunction doNextCompaction(self) {\n var task = self._compactionQueue[0];\n var opts = task.opts;\n var callback = task.callback;\n self.get('_local/compaction').catch(function () {\n return false;\n }).then(function (doc) {\n if (doc && doc.last_seq) {\n opts.last_seq = doc.last_seq;\n }\n self._compact(opts, function (err, res) {\n /* istanbul ignore if */\n if (err) {\n callback(err);\n } else {\n callback(null, res);\n }\n immediate(function () {\n self._compactionQueue.shift();\n if (self._compactionQueue.length) {\n doNextCompaction(self);\n }\n });\n });\n });\n}\n\nfunction attachmentNameError(name) {\n if (name.charAt(0) === '_') {\n return name + ' is not a valid attachment name, attachment ' +\n 'names cannot start with \\'_\\'';\n }\n return false;\n}\n\ninherits(AbstractPouchDB, EE);\n\nfunction AbstractPouchDB() {\n EE.call(this);\n\n // re-bind prototyped methods\n for (var p in AbstractPouchDB.prototype) {\n if (typeof this[p] === 'function') {\n this[p] = this[p].bind(this);\n }\n }\n}\n\nAbstractPouchDB.prototype.post =\n adapterFun('post', function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (typeof doc !== 'object' || Array.isArray(doc)) {\n return callback(createError(NOT_AN_OBJECT));\n }\n this.bulkDocs({docs: [doc]}, opts, yankError(callback, doc._id));\n});\n\nAbstractPouchDB.prototype.put = adapterFun('put', function (doc, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n if (typeof doc !== 'object' || Array.isArray(doc)) {\n return cb(createError(NOT_AN_OBJECT));\n }\n invalidIdError(doc._id);\n if (isLocalId(doc._id) && typeof this._putLocal === 'function') {\n if (doc._deleted) {\n return this._removeLocal(doc, cb);\n } else {\n return this._putLocal(doc, cb);\n }\n }\n var self = this;\n if (opts.force && doc._rev) {\n transformForceOptionToNewEditsOption();\n putDoc(function (err) {\n var result = err ? null : {ok: true, id: doc._id, rev: doc._rev};\n cb(err, result);\n });\n } else {\n putDoc(cb);\n }\n\n function transformForceOptionToNewEditsOption() {\n var parts = doc._rev.split('-');\n var oldRevId = parts[1];\n var oldRevNum = parseInt(parts[0], 10);\n\n var newRevNum = oldRevNum + 1;\n var newRevId = rev();\n\n doc._revisions = {\n start: newRevNum,\n ids: [newRevId, oldRevId]\n };\n doc._rev = newRevNum + '-' + newRevId;\n opts.new_edits = false;\n }\n function putDoc(next) {\n if (typeof self._put === 'function' && opts.new_edits !== false) {\n self._put(doc, opts, next);\n } else {\n self.bulkDocs({docs: [doc]}, opts, yankError(next, doc._id));\n }\n }\n});\n\nAbstractPouchDB.prototype.putAttachment =\n adapterFun('putAttachment', function (docId, attachmentId, rev$$1,\n blob, type) {\n var api = this;\n if (typeof type === 'function') {\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n // Lets fix in https://github.com/pouchdb/pouchdb/issues/3267\n /* istanbul ignore if */\n if (typeof type === 'undefined') {\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n if (!type) {\n guardedConsole('warn', 'Attachment', attachmentId, 'on document', docId, 'is missing content_type');\n }\n\n function createAttachment(doc) {\n var prevrevpos = '_rev' in doc ? parseInt(doc._rev, 10) : 0;\n doc._attachments = doc._attachments || {};\n doc._attachments[attachmentId] = {\n content_type: type,\n data: blob,\n revpos: ++prevrevpos\n };\n return api.put(doc);\n }\n\n return api.get(docId).then(function (doc) {\n if (doc._rev !== rev$$1) {\n throw createError(REV_CONFLICT);\n }\n\n return createAttachment(doc);\n }, function (err) {\n // create new doc\n /* istanbul ignore else */\n if (err.reason === MISSING_DOC.message) {\n return createAttachment({_id: docId});\n } else {\n throw err;\n }\n });\n});\n\nAbstractPouchDB.prototype.removeAttachment =\n adapterFun('removeAttachment', function (docId, attachmentId, rev$$1,\n callback) {\n var self = this;\n self.get(docId, function (err, obj) {\n /* istanbul ignore if */\n if (err) {\n callback(err);\n return;\n }\n if (obj._rev !== rev$$1) {\n callback(createError(REV_CONFLICT));\n return;\n }\n /* istanbul ignore if */\n if (!obj._attachments) {\n return callback();\n }\n delete obj._attachments[attachmentId];\n if (Object.keys(obj._attachments).length === 0) {\n delete obj._attachments;\n }\n self.put(obj, callback);\n });\n});\n\nAbstractPouchDB.prototype.remove =\n adapterFun('remove', function (docOrId, optsOrRev, opts, callback) {\n var doc;\n if (typeof optsOrRev === 'string') {\n // id, rev, opts, callback style\n doc = {\n _id: docOrId,\n _rev: optsOrRev\n };\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n } else {\n // doc, opts, callback style\n doc = docOrId;\n if (typeof optsOrRev === 'function') {\n callback = optsOrRev;\n opts = {};\n } else {\n callback = opts;\n opts = optsOrRev;\n }\n }\n opts = opts || {};\n opts.was_delete = true;\n var newDoc = {_id: doc._id, _rev: (doc._rev || opts.rev)};\n newDoc._deleted = true;\n if (isLocalId(newDoc._id) && typeof this._removeLocal === 'function') {\n return this._removeLocal(doc, callback);\n }\n this.bulkDocs({docs: [newDoc]}, opts, yankError(callback, newDoc._id));\n});\n\nAbstractPouchDB.prototype.revsDiff =\n adapterFun('revsDiff', function (req, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n var ids = Object.keys(req);\n\n if (!ids.length) {\n return callback(null, {});\n }\n\n var count = 0;\n var missing = new ExportedMap();\n\n function addToMissing(id, revId) {\n if (!missing.has(id)) {\n missing.set(id, {missing: []});\n }\n missing.get(id).missing.push(revId);\n }\n\n function processDoc(id, rev_tree) {\n // Is this fast enough? Maybe we should switch to a set simulated by a map\n var missingForId = req[id].slice(0);\n traverseRevTree(rev_tree, function (isLeaf, pos, revHash, ctx,\n opts) {\n var rev$$1 = pos + '-' + revHash;\n var idx = missingForId.indexOf(rev$$1);\n if (idx === -1) {\n return;\n }\n\n missingForId.splice(idx, 1);\n /* istanbul ignore if */\n if (opts.status !== 'available') {\n addToMissing(id, rev$$1);\n }\n });\n\n // Traversing the tree is synchronous, so now `missingForId` contains\n // revisions that were not found in the tree\n missingForId.forEach(function (rev$$1) {\n addToMissing(id, rev$$1);\n });\n }\n\n ids.map(function (id) {\n this._getRevisionTree(id, function (err, rev_tree) {\n if (err && err.status === 404 && err.message === 'missing') {\n missing.set(id, {missing: req[id]});\n } else if (err) {\n /* istanbul ignore next */\n return callback(err);\n } else {\n processDoc(id, rev_tree);\n }\n\n if (++count === ids.length) {\n // convert LazyMap to object\n var missingObj = {};\n missing.forEach(function (value, key) {\n missingObj[key] = value;\n });\n return callback(null, missingObj);\n }\n });\n }, this);\n});\n\n// _bulk_get API for faster replication, as described in\n// https://github.com/apache/couchdb-chttpd/pull/33\n// At the \"abstract\" level, it will just run multiple get()s in\n// parallel, because this isn't much of a performance cost\n// for local databases (except the cost of multiple transactions, which is\n// small). The http adapter overrides this in order\n// to do a more efficient single HTTP request.\nAbstractPouchDB.prototype.bulkGet =\n adapterFun('bulkGet', function (opts, callback) {\n bulkGet(this, opts, callback);\n});\n\n// compact one document and fire callback\n// by compacting we mean removing all revisions which\n// are further from the leaf in revision tree than max_height\nAbstractPouchDB.prototype.compactDocument =\n adapterFun('compactDocument', function (docId, maxHeight, callback) {\n var self = this;\n this._getRevisionTree(docId, function (err, revTree) {\n /* istanbul ignore if */\n if (err) {\n return callback(err);\n }\n var height = computeHeight(revTree);\n var candidates = [];\n var revs = [];\n Object.keys(height).forEach(function (rev$$1) {\n if (height[rev$$1] > maxHeight) {\n candidates.push(rev$$1);\n }\n });\n\n traverseRevTree(revTree, function (isLeaf, pos, revHash, ctx, opts) {\n var rev$$1 = pos + '-' + revHash;\n if (opts.status === 'available' && candidates.indexOf(rev$$1) !== -1) {\n revs.push(rev$$1);\n }\n });\n self._doCompaction(docId, revs, callback);\n });\n});\n\n// compact the whole database using single document\n// compaction\nAbstractPouchDB.prototype.compact =\n adapterFun('compact', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n var self = this;\n opts = opts || {};\n\n self._compactionQueue = self._compactionQueue || [];\n self._compactionQueue.push({opts: opts, callback: callback});\n if (self._compactionQueue.length === 1) {\n doNextCompaction(self);\n }\n});\nAbstractPouchDB.prototype._compact = function (opts, callback) {\n var self = this;\n var changesOpts = {\n return_docs: false,\n last_seq: opts.last_seq || 0\n };\n var promises = [];\n\n function onChange(row) {\n promises.push(self.compactDocument(row.id, 0));\n }\n function onComplete(resp) {\n var lastSeq = resp.last_seq;\n Promise.all(promises).then(function () {\n return upsert(self, '_local/compaction', function deltaFunc(doc) {\n if (!doc.last_seq || doc.last_seq < lastSeq) {\n doc.last_seq = lastSeq;\n return doc;\n }\n return false; // somebody else got here first, don't update\n });\n }).then(function () {\n callback(null, {ok: true});\n }).catch(callback);\n }\n self.changes(changesOpts)\n .on('change', onChange)\n .on('complete', onComplete)\n .on('error', callback);\n};\n\n/* Begin api wrappers. Specific functionality to storage belongs in the\n _[method] */\nAbstractPouchDB.prototype.get = adapterFun('get', function (id, opts, cb) {\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n if (typeof id !== 'string') {\n return cb(createError(INVALID_ID));\n }\n if (isLocalId(id) && typeof this._getLocal === 'function') {\n return this._getLocal(id, cb);\n }\n var leaves = [], self = this;\n\n function finishOpenRevs() {\n var result = [];\n var count = leaves.length;\n /* istanbul ignore if */\n if (!count) {\n return cb(null, result);\n }\n\n // order with open_revs is unspecified\n leaves.forEach(function (leaf) {\n self.get(id, {\n rev: leaf,\n revs: opts.revs,\n latest: opts.latest,\n attachments: opts.attachments,\n binary: opts.binary\n }, function (err, doc) {\n if (!err) {\n // using latest=true can produce duplicates\n var existing;\n for (var i = 0, l = result.length; i < l; i++) {\n if (result[i].ok && result[i].ok._rev === doc._rev) {\n existing = true;\n break;\n }\n }\n if (!existing) {\n result.push({ok: doc});\n }\n } else {\n result.push({missing: leaf});\n }\n count--;\n if (!count) {\n cb(null, result);\n }\n });\n });\n }\n\n if (opts.open_revs) {\n if (opts.open_revs === \"all\") {\n this._getRevisionTree(id, function (err, rev_tree) {\n /* istanbul ignore if */\n if (err) {\n return cb(err);\n }\n leaves = collectLeaves(rev_tree).map(function (leaf) {\n return leaf.rev;\n });\n finishOpenRevs();\n });\n } else {\n if (Array.isArray(opts.open_revs)) {\n leaves = opts.open_revs;\n for (var i = 0; i < leaves.length; i++) {\n var l = leaves[i];\n // looks like it's the only thing couchdb checks\n if (!(typeof (l) === \"string\" && /^\\d+-/.test(l))) {\n return cb(createError(INVALID_REV));\n }\n }\n finishOpenRevs();\n } else {\n return cb(createError(UNKNOWN_ERROR, 'function_clause'));\n }\n }\n return; // open_revs does not like other options\n }\n\n return this._get(id, opts, function (err, result) {\n if (err) {\n err.docId = id;\n return cb(err);\n }\n\n var doc = result.doc;\n var metadata = result.metadata;\n var ctx = result.ctx;\n\n if (opts.conflicts) {\n var conflicts = collectConflicts(metadata);\n if (conflicts.length) {\n doc._conflicts = conflicts;\n }\n }\n\n if (isDeleted(metadata, doc._rev)) {\n doc._deleted = true;\n }\n\n if (opts.revs || opts.revs_info) {\n var splittedRev = doc._rev.split('-');\n var revNo = parseInt(splittedRev[0], 10);\n var revHash = splittedRev[1];\n\n var paths = rootToLeaf(metadata.rev_tree);\n var path = null;\n\n for (var i = 0; i < paths.length; i++) {\n var currentPath = paths[i];\n var hashIndex = currentPath.ids.map(function (x) { return x.id; })\n .indexOf(revHash);\n var hashFoundAtRevPos = hashIndex === (revNo - 1);\n\n if (hashFoundAtRevPos || (!path && hashIndex !== -1)) {\n path = currentPath;\n }\n }\n\n /* istanbul ignore if */\n if (!path) {\n err = new Error('invalid rev tree');\n err.docId = id;\n return cb(err);\n }\n\n var indexOfRev = path.ids.map(function (x) { return x.id; })\n .indexOf(doc._rev.split('-')[1]) + 1;\n var howMany = path.ids.length - indexOfRev;\n path.ids.splice(indexOfRev, howMany);\n path.ids.reverse();\n\n if (opts.revs) {\n doc._revisions = {\n start: (path.pos + path.ids.length) - 1,\n ids: path.ids.map(function (rev$$1) {\n return rev$$1.id;\n })\n };\n }\n if (opts.revs_info) {\n var pos = path.pos + path.ids.length;\n doc._revs_info = path.ids.map(function (rev$$1) {\n pos--;\n return {\n rev: pos + '-' + rev$$1.id,\n status: rev$$1.opts.status\n };\n });\n }\n }\n\n if (opts.attachments && doc._attachments) {\n var attachments = doc._attachments;\n var count = Object.keys(attachments).length;\n if (count === 0) {\n return cb(null, doc);\n }\n Object.keys(attachments).forEach(function (key) {\n this._getAttachment(doc._id, key, attachments[key], {\n // Previously the revision handling was done in adapter.js\n // getAttachment, however since idb-next doesnt we need to\n // pass the rev through\n rev: doc._rev,\n binary: opts.binary,\n ctx: ctx\n }, function (err, data) {\n var att = doc._attachments[key];\n att.data = data;\n delete att.stub;\n delete att.length;\n if (!--count) {\n cb(null, doc);\n }\n });\n }, self);\n } else {\n if (doc._attachments) {\n for (var key in doc._attachments) {\n /* istanbul ignore else */\n if (doc._attachments.hasOwnProperty(key)) {\n doc._attachments[key].stub = true;\n }\n }\n }\n cb(null, doc);\n }\n });\n});\n\n// TODO: I dont like this, it forces an extra read for every\n// attachment read and enforces a confusing api between\n// adapter.js and the adapter implementation\nAbstractPouchDB.prototype.getAttachment =\n adapterFun('getAttachment', function (docId, attachmentId, opts, callback) {\n var self = this;\n if (opts instanceof Function) {\n callback = opts;\n opts = {};\n }\n this._get(docId, opts, function (err, res) {\n if (err) {\n return callback(err);\n }\n if (res.doc._attachments && res.doc._attachments[attachmentId]) {\n opts.ctx = res.ctx;\n opts.binary = true;\n self._getAttachment(docId, attachmentId,\n res.doc._attachments[attachmentId], opts, callback);\n } else {\n return callback(createError(MISSING_DOC));\n }\n });\n});\n\nAbstractPouchDB.prototype.allDocs =\n adapterFun('allDocs', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts.skip = typeof opts.skip !== 'undefined' ? opts.skip : 0;\n if (opts.start_key) {\n opts.startkey = opts.start_key;\n }\n if (opts.end_key) {\n opts.endkey = opts.end_key;\n }\n if ('keys' in opts) {\n if (!Array.isArray(opts.keys)) {\n return callback(new TypeError('options.keys must be an array'));\n }\n var incompatibleOpt =\n ['startkey', 'endkey', 'key'].filter(function (incompatibleOpt) {\n return incompatibleOpt in opts;\n })[0];\n if (incompatibleOpt) {\n callback(createError(QUERY_PARSE_ERROR,\n 'Query parameter `' + incompatibleOpt +\n '` is not compatible with multi-get'\n ));\n return;\n }\n if (!isRemote(this)) {\n allDocsKeysParse(opts);\n if (opts.keys.length === 0) {\n return this._allDocs({limit: 0}, callback);\n }\n }\n }\n\n return this._allDocs(opts, callback);\n});\n\nAbstractPouchDB.prototype.changes = function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n\n // By default set return_docs to false if the caller has opts.live = true,\n // this will prevent us from collecting the set of changes indefinitely\n // resulting in growing memory\n opts.return_docs = ('return_docs' in opts) ? opts.return_docs : !opts.live;\n\n return new Changes$1(this, opts, callback);\n};\n\nAbstractPouchDB.prototype.close = adapterFun('close', function (callback) {\n this._closed = true;\n this.emit('closed');\n return this._close(callback);\n});\n\nAbstractPouchDB.prototype.info = adapterFun('info', function (callback) {\n var self = this;\n this._info(function (err, info) {\n if (err) {\n return callback(err);\n }\n // assume we know better than the adapter, unless it informs us\n info.db_name = info.db_name || self.name;\n info.auto_compaction = !!(self.auto_compaction && !isRemote(self));\n info.adapter = self.adapter;\n callback(null, info);\n });\n});\n\nAbstractPouchDB.prototype.id = adapterFun('id', function (callback) {\n return this._id(callback);\n});\n\n/* istanbul ignore next */\nAbstractPouchDB.prototype.type = function () {\n return (typeof this._type === 'function') ? this._type() : this.adapter;\n};\n\nAbstractPouchDB.prototype.bulkDocs =\n adapterFun('bulkDocs', function (req, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n\n if (Array.isArray(req)) {\n req = {\n docs: req\n };\n }\n\n if (!req || !req.docs || !Array.isArray(req.docs)) {\n return callback(createError(MISSING_BULK_DOCS));\n }\n\n for (var i = 0; i < req.docs.length; ++i) {\n if (typeof req.docs[i] !== 'object' || Array.isArray(req.docs[i])) {\n return callback(createError(NOT_AN_OBJECT));\n }\n }\n\n var attachmentError;\n req.docs.forEach(function (doc) {\n if (doc._attachments) {\n Object.keys(doc._attachments).forEach(function (name) {\n attachmentError = attachmentError || attachmentNameError(name);\n if (!doc._attachments[name].content_type) {\n guardedConsole('warn', 'Attachment', name, 'on document', doc._id, 'is missing content_type');\n }\n });\n }\n });\n\n if (attachmentError) {\n return callback(createError(BAD_REQUEST, attachmentError));\n }\n\n if (!('new_edits' in opts)) {\n if ('new_edits' in req) {\n opts.new_edits = req.new_edits;\n } else {\n opts.new_edits = true;\n }\n }\n\n var adapter = this;\n if (!opts.new_edits && !isRemote(adapter)) {\n // ensure revisions of the same doc are sorted, so that\n // the local adapter processes them correctly (#2935)\n req.docs.sort(compareByIdThenRev);\n }\n\n cleanDocs(req.docs);\n\n // in the case of conflicts, we want to return the _ids to the user\n // however, the underlying adapter may destroy the docs array, so\n // create a copy here\n var ids = req.docs.map(function (doc) {\n return doc._id;\n });\n\n return this._bulkDocs(req, opts, function (err, res) {\n if (err) {\n return callback(err);\n }\n if (!opts.new_edits) {\n // this is what couch does when new_edits is false\n res = res.filter(function (x) {\n return x.error;\n });\n }\n // add ids for error/conflict responses (not required for CouchDB)\n if (!isRemote(adapter)) {\n for (var i = 0, l = res.length; i < l; i++) {\n res[i].id = res[i].id || ids[i];\n }\n }\n\n callback(null, res);\n });\n});\n\nAbstractPouchDB.prototype.registerDependentDatabase =\n adapterFun('registerDependentDatabase', function (dependentDb,\n callback) {\n var depDB = new this.constructor(dependentDb, this.__opts);\n\n function diffFun(doc) {\n doc.dependentDbs = doc.dependentDbs || {};\n if (doc.dependentDbs[dependentDb]) {\n return false; // no update required\n }\n doc.dependentDbs[dependentDb] = true;\n return doc;\n }\n upsert(this, '_local/_pouch_dependentDbs', diffFun)\n .then(function () {\n callback(null, {db: depDB});\n }).catch(callback);\n});\n\nAbstractPouchDB.prototype.destroy =\n adapterFun('destroy', function (opts, callback) {\n\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n var self = this;\n var usePrefix = 'use_prefix' in self ? self.use_prefix : true;\n\n function destroyDb() {\n // call destroy method of the particular adaptor\n self._destroy(opts, function (err, resp) {\n if (err) {\n return callback(err);\n }\n self._destroyed = true;\n self.emit('destroyed');\n callback(null, resp || { 'ok': true });\n });\n }\n\n if (isRemote(self)) {\n // no need to check for dependent DBs if it's a remote DB\n return destroyDb();\n }\n\n self.get('_local/_pouch_dependentDbs', function (err, localDoc) {\n if (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n return callback(err);\n } else { // no dependencies\n return destroyDb();\n }\n }\n var dependentDbs = localDoc.dependentDbs;\n var PouchDB = self.constructor;\n var deletedMap = Object.keys(dependentDbs).map(function (name) {\n // use_prefix is only false in the browser\n /* istanbul ignore next */\n var trueName = usePrefix ?\n name.replace(new RegExp('^' + PouchDB.prefix), '') : name;\n return new PouchDB(trueName, self.__opts).destroy();\n });\n Promise.all(deletedMap).then(destroyDb, callback);\n });\n});\n\nfunction TaskQueue() {\n this.isReady = false;\n this.failed = false;\n this.queue = [];\n}\n\nTaskQueue.prototype.execute = function () {\n var fun;\n if (this.failed) {\n while ((fun = this.queue.shift())) {\n fun(this.failed);\n }\n } else {\n while ((fun = this.queue.shift())) {\n fun();\n }\n }\n};\n\nTaskQueue.prototype.fail = function (err) {\n this.failed = err;\n this.execute();\n};\n\nTaskQueue.prototype.ready = function (db) {\n this.isReady = true;\n this.db = db;\n this.execute();\n};\n\nTaskQueue.prototype.addTask = function (fun) {\n this.queue.push(fun);\n if (this.failed) {\n this.execute();\n }\n};\n\nfunction parseAdapter(name, opts) {\n var match = name.match(/([a-z-]*):\\/\\/(.*)/);\n if (match) {\n // the http adapter expects the fully qualified name\n return {\n name: /https?/.test(match[1]) ? match[1] + '://' + match[2] : match[2],\n adapter: match[1]\n };\n }\n\n var adapters = PouchDB.adapters;\n var preferredAdapters = PouchDB.preferredAdapters;\n var prefix = PouchDB.prefix;\n var adapterName = opts.adapter;\n\n if (!adapterName) { // automatically determine adapter\n for (var i = 0; i < preferredAdapters.length; ++i) {\n adapterName = preferredAdapters[i];\n // check for browsers that have been upgraded from websql-only to websql+idb\n /* istanbul ignore if */\n if (adapterName === 'idb' && 'websql' in adapters &&\n hasLocalStorage() && localStorage['_pouch__websqldb_' + prefix + name]) {\n // log it, because this can be confusing during development\n guardedConsole('log', 'PouchDB is downgrading \"' + name + '\" to WebSQL to' +\n ' avoid data loss, because it was already opened with WebSQL.');\n continue; // keep using websql to avoid user data loss\n }\n break;\n }\n }\n\n var adapter = adapters[adapterName];\n\n // if adapter is invalid, then an error will be thrown later\n var usePrefix = (adapter && 'use_prefix' in adapter) ?\n adapter.use_prefix : true;\n\n return {\n name: usePrefix ? (prefix + name) : name,\n adapter: adapterName\n };\n}\n\n// OK, so here's the deal. Consider this code:\n// var db1 = new PouchDB('foo');\n// var db2 = new PouchDB('foo');\n// db1.destroy();\n// ^ these two both need to emit 'destroyed' events,\n// as well as the PouchDB constructor itself.\n// So we have one db object (whichever one got destroy() called on it)\n// responsible for emitting the initial event, which then gets emitted\n// by the constructor, which then broadcasts it to any other dbs\n// that may have been created with the same name.\nfunction prepareForDestruction(self) {\n\n function onDestroyed(from_constructor) {\n self.removeListener('closed', onClosed);\n if (!from_constructor) {\n self.constructor.emit('destroyed', self.name);\n }\n }\n\n function onClosed() {\n self.removeListener('destroyed', onDestroyed);\n self.constructor.emit('unref', self);\n }\n\n self.once('destroyed', onDestroyed);\n self.once('closed', onClosed);\n self.constructor.emit('ref', self);\n}\n\ninherits(PouchDB, AbstractPouchDB);\nfunction PouchDB(name, opts) {\n // In Node our test suite only tests this for PouchAlt unfortunately\n /* istanbul ignore if */\n if (!(this instanceof PouchDB)) {\n return new PouchDB(name, opts);\n }\n\n var self = this;\n opts = opts || {};\n\n if (name && typeof name === 'object') {\n opts = name;\n name = opts.name;\n delete opts.name;\n }\n\n if (opts.deterministic_revs === undefined) {\n opts.deterministic_revs = true;\n }\n\n this.__opts = opts = clone(opts);\n\n self.auto_compaction = opts.auto_compaction;\n self.prefix = PouchDB.prefix;\n\n if (typeof name !== 'string') {\n throw new Error('Missing/invalid DB name');\n }\n\n var prefixedName = (opts.prefix || '') + name;\n var backend = parseAdapter(prefixedName, opts);\n\n opts.name = backend.name;\n opts.adapter = opts.adapter || backend.adapter;\n\n self.name = name;\n self._adapter = opts.adapter;\n PouchDB.emit('debug', ['adapter', 'Picked adapter: ', opts.adapter]);\n\n if (!PouchDB.adapters[opts.adapter] ||\n !PouchDB.adapters[opts.adapter].valid()) {\n throw new Error('Invalid Adapter: ' + opts.adapter);\n }\n\n AbstractPouchDB.call(self);\n self.taskqueue = new TaskQueue();\n\n self.adapter = opts.adapter;\n\n PouchDB.adapters[opts.adapter].call(self, opts, function (err) {\n if (err) {\n return self.taskqueue.fail(err);\n }\n prepareForDestruction(self);\n\n self.emit('created', self);\n PouchDB.emit('created', self.name);\n self.taskqueue.ready(self);\n });\n\n}\n\n// AbortController was introduced quite a while after fetch and\n// isnt required for PouchDB to function so polyfill if needed\nvar a = (typeof AbortController !== 'undefined')\n ? AbortController\n : function () { return {abort: function () {}}; };\n\nvar f$1 = fetch;\nvar h = Headers;\n\nPouchDB.adapters = {};\nPouchDB.preferredAdapters = [];\n\nPouchDB.prefix = '_pouch_';\n\nvar eventEmitter = new EE();\n\nfunction setUpEventEmitter(Pouch) {\n Object.keys(EE.prototype).forEach(function (key) {\n if (typeof EE.prototype[key] === 'function') {\n Pouch[key] = eventEmitter[key].bind(eventEmitter);\n }\n });\n\n // these are created in constructor.js, and allow us to notify each DB with\n // the same name that it was destroyed, via the constructor object\n var destructListeners = Pouch._destructionListeners = new ExportedMap();\n\n Pouch.on('ref', function onConstructorRef(db) {\n if (!destructListeners.has(db.name)) {\n destructListeners.set(db.name, []);\n }\n destructListeners.get(db.name).push(db);\n });\n\n Pouch.on('unref', function onConstructorUnref(db) {\n if (!destructListeners.has(db.name)) {\n return;\n }\n var dbList = destructListeners.get(db.name);\n var pos = dbList.indexOf(db);\n if (pos < 0) {\n /* istanbul ignore next */\n return;\n }\n dbList.splice(pos, 1);\n if (dbList.length > 1) {\n /* istanbul ignore next */\n destructListeners.set(db.name, dbList);\n } else {\n destructListeners.delete(db.name);\n }\n });\n\n Pouch.on('destroyed', function onConstructorDestroyed(name) {\n if (!destructListeners.has(name)) {\n return;\n }\n var dbList = destructListeners.get(name);\n destructListeners.delete(name);\n dbList.forEach(function (db) {\n db.emit('destroyed',true);\n });\n });\n}\n\nsetUpEventEmitter(PouchDB);\n\nPouchDB.adapter = function (id, obj, addToPreferredAdapters) {\n /* istanbul ignore else */\n if (obj.valid()) {\n PouchDB.adapters[id] = obj;\n if (addToPreferredAdapters) {\n PouchDB.preferredAdapters.push(id);\n }\n }\n};\n\nPouchDB.plugin = function (obj) {\n if (typeof obj === 'function') { // function style for plugins\n obj(PouchDB);\n } else if (typeof obj !== 'object' || Object.keys(obj).length === 0) {\n throw new Error('Invalid plugin: got \"' + obj + '\", expected an object or a function');\n } else {\n Object.keys(obj).forEach(function (id) { // object style for plugins\n PouchDB.prototype[id] = obj[id];\n });\n }\n if (this.__defaults) {\n PouchDB.__defaults = $inject_Object_assign({}, this.__defaults);\n }\n return PouchDB;\n};\n\nPouchDB.defaults = function (defaultOpts) {\n function PouchAlt(name, opts) {\n if (!(this instanceof PouchAlt)) {\n return new PouchAlt(name, opts);\n }\n\n opts = opts || {};\n\n if (name && typeof name === 'object') {\n opts = name;\n name = opts.name;\n delete opts.name;\n }\n\n opts = $inject_Object_assign({}, PouchAlt.__defaults, opts);\n PouchDB.call(this, name, opts);\n }\n\n inherits(PouchAlt, PouchDB);\n\n PouchAlt.preferredAdapters = PouchDB.preferredAdapters.slice();\n Object.keys(PouchDB).forEach(function (key) {\n if (!(key in PouchAlt)) {\n PouchAlt[key] = PouchDB[key];\n }\n });\n\n // make default options transitive\n // https://github.com/pouchdb/pouchdb/issues/5922\n PouchAlt.__defaults = $inject_Object_assign({}, this.__defaults, defaultOpts);\n\n return PouchAlt;\n};\n\nPouchDB.fetch = function (url, opts) {\n return f$1(url, opts);\n};\n\n// managed automatically by set-version.js\nvar version = \"7.2.2\";\n\n// this would just be \"return doc[field]\", but fields\n// can be \"deep\" due to dot notation\nfunction getFieldFromDoc(doc, parsedField) {\n var value = doc;\n for (var i = 0, len = parsedField.length; i < len; i++) {\n var key = parsedField[i];\n value = value[key];\n if (!value) {\n break;\n }\n }\n return value;\n}\n\nfunction compare$1(left, right) {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n\n// Converts a string in dot notation to an array of its components, with backslash escaping\nfunction parseField(fieldName) {\n // fields may be deep (e.g. \"foo.bar.baz\"), so parse\n var fields = [];\n var current = '';\n for (var i = 0, len = fieldName.length; i < len; i++) {\n var ch = fieldName[i];\n if (ch === '.') {\n if (i > 0 && fieldName[i - 1] === '\\\\') { // escaped delimiter\n current = current.substring(0, current.length - 1) + '.';\n } else { // not escaped, so delimiter\n fields.push(current);\n current = '';\n }\n } else { // normal character\n current += ch;\n }\n }\n fields.push(current);\n return fields;\n}\n\nvar combinationFields = ['$or', '$nor', '$not'];\nfunction isCombinationalField(field) {\n return combinationFields.indexOf(field) > -1;\n}\n\nfunction getKey(obj) {\n return Object.keys(obj)[0];\n}\n\nfunction getValue(obj) {\n return obj[getKey(obj)];\n}\n\n\n// flatten an array of selectors joined by an $and operator\nfunction mergeAndedSelectors(selectors) {\n\n // sort to ensure that e.g. if the user specified\n // $and: [{$gt: 'a'}, {$gt: 'b'}], then it's collapsed into\n // just {$gt: 'b'}\n var res = {};\n\n selectors.forEach(function (selector) {\n Object.keys(selector).forEach(function (field) {\n var matcher = selector[field];\n if (typeof matcher !== 'object') {\n matcher = {$eq: matcher};\n }\n\n if (isCombinationalField(field)) {\n if (matcher instanceof Array) {\n res[field] = matcher.map(function (m) {\n return mergeAndedSelectors([m]);\n });\n } else {\n res[field] = mergeAndedSelectors([matcher]);\n }\n } else {\n var fieldMatchers = res[field] = res[field] || {};\n Object.keys(matcher).forEach(function (operator) {\n var value = matcher[operator];\n\n if (operator === '$gt' || operator === '$gte') {\n return mergeGtGte(operator, value, fieldMatchers);\n } else if (operator === '$lt' || operator === '$lte') {\n return mergeLtLte(operator, value, fieldMatchers);\n } else if (operator === '$ne') {\n return mergeNe(value, fieldMatchers);\n } else if (operator === '$eq') {\n return mergeEq(value, fieldMatchers);\n }\n fieldMatchers[operator] = value;\n });\n }\n });\n });\n\n return res;\n}\n\n\n\n// collapse logically equivalent gt/gte values\nfunction mergeGtGte(operator, value, fieldMatchers) {\n if (typeof fieldMatchers.$eq !== 'undefined') {\n return; // do nothing\n }\n if (typeof fieldMatchers.$gte !== 'undefined') {\n if (operator === '$gte') {\n if (value > fieldMatchers.$gte) { // more specificity\n fieldMatchers.$gte = value;\n }\n } else { // operator === '$gt'\n if (value >= fieldMatchers.$gte) { // more specificity\n delete fieldMatchers.$gte;\n fieldMatchers.$gt = value;\n }\n }\n } else if (typeof fieldMatchers.$gt !== 'undefined') {\n if (operator === '$gte') {\n if (value > fieldMatchers.$gt) { // more specificity\n delete fieldMatchers.$gt;\n fieldMatchers.$gte = value;\n }\n } else { // operator === '$gt'\n if (value > fieldMatchers.$gt) { // more specificity\n fieldMatchers.$gt = value;\n }\n }\n } else {\n fieldMatchers[operator] = value;\n }\n}\n\n// collapse logically equivalent lt/lte values\nfunction mergeLtLte(operator, value, fieldMatchers) {\n if (typeof fieldMatchers.$eq !== 'undefined') {\n return; // do nothing\n }\n if (typeof fieldMatchers.$lte !== 'undefined') {\n if (operator === '$lte') {\n if (value < fieldMatchers.$lte) { // more specificity\n fieldMatchers.$lte = value;\n }\n } else { // operator === '$gt'\n if (value <= fieldMatchers.$lte) { // more specificity\n delete fieldMatchers.$lte;\n fieldMatchers.$lt = value;\n }\n }\n } else if (typeof fieldMatchers.$lt !== 'undefined') {\n if (operator === '$lte') {\n if (value < fieldMatchers.$lt) { // more specificity\n delete fieldMatchers.$lt;\n fieldMatchers.$lte = value;\n }\n } else { // operator === '$gt'\n if (value < fieldMatchers.$lt) { // more specificity\n fieldMatchers.$lt = value;\n }\n }\n } else {\n fieldMatchers[operator] = value;\n }\n}\n\n// combine $ne values into one array\nfunction mergeNe(value, fieldMatchers) {\n if ('$ne' in fieldMatchers) {\n // there are many things this could \"not\" be\n fieldMatchers.$ne.push(value);\n } else { // doesn't exist yet\n fieldMatchers.$ne = [value];\n }\n}\n\n// add $eq into the mix\nfunction mergeEq(value, fieldMatchers) {\n // these all have less specificity than the $eq\n // TODO: check for user errors here\n delete fieldMatchers.$gt;\n delete fieldMatchers.$gte;\n delete fieldMatchers.$lt;\n delete fieldMatchers.$lte;\n delete fieldMatchers.$ne;\n fieldMatchers.$eq = value;\n}\n\n//#7458: execute function mergeAndedSelectors on nested $and\nfunction mergeAndedSelectorsNested(obj) {\n for (var prop in obj) {\n if (Array.isArray(obj)) {\n for (var i in obj) {\n if (obj[i]['$and']) {\n obj[i] = mergeAndedSelectors(obj[i]['$and']);\n }\n }\n }\n var value = obj[prop];\n if (typeof value === 'object') {\n mergeAndedSelectorsNested(value); // <- recursive call\n }\n }\n return obj;\n}\n\n//#7458: determine id $and is present in selector (at any level)\nfunction isAndInSelector(obj, isAnd) {\n for (var prop in obj) {\n if (prop === '$and') {\n isAnd = true;\n }\n var value = obj[prop];\n if (typeof value === 'object') {\n isAnd = isAndInSelector(value, isAnd); // <- recursive call\n }\n }\n return isAnd;\n}\n\n//\n// normalize the selector\n//\nfunction massageSelector(input) {\n var result = clone(input);\n var wasAnded = false;\n //#7458: if $and is present in selector (at any level) merge nested $and\n if (isAndInSelector(result, false)) {\n result = mergeAndedSelectorsNested(result);\n if ('$and' in result) {\n result = mergeAndedSelectors(result['$and']);\n }\n wasAnded = true;\n }\n\n ['$or', '$nor'].forEach(function (orOrNor) {\n if (orOrNor in result) {\n // message each individual selector\n // e.g. {foo: 'bar'} becomes {foo: {$eq: 'bar'}}\n result[orOrNor].forEach(function (subSelector) {\n var fields = Object.keys(subSelector);\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n var matcher = subSelector[field];\n if (typeof matcher !== 'object' || matcher === null) {\n subSelector[field] = {$eq: matcher};\n }\n }\n });\n }\n });\n\n if ('$not' in result) {\n //This feels a little like forcing, but it will work for now,\n //I would like to come back to this and make the merging of selectors a little more generic\n result['$not'] = mergeAndedSelectors([result['$not']]);\n }\n\n var fields = Object.keys(result);\n\n for (var i = 0; i < fields.length; i++) {\n var field = fields[i];\n var matcher = result[field];\n\n if (typeof matcher !== 'object' || matcher === null) {\n matcher = {$eq: matcher};\n } else if ('$ne' in matcher && !wasAnded) {\n // I put these in an array, since there may be more than one\n // but in the \"mergeAnded\" operation, I already take care of that\n matcher.$ne = [matcher.$ne];\n }\n result[field] = matcher;\n }\n\n return result;\n}\n\nfunction pad(str, padWith, upToLength) {\n var padding = '';\n var targetLength = upToLength - str.length;\n /* istanbul ignore next */\n while (padding.length < targetLength) {\n padding += padWith;\n }\n return padding;\n}\n\nfunction padLeft(str, padWith, upToLength) {\n var padding = pad(str, padWith, upToLength);\n return padding + str;\n}\n\nvar MIN_MAGNITUDE = -324; // verified by -Number.MIN_VALUE\nvar MAGNITUDE_DIGITS = 3; // ditto\nvar SEP = ''; // set to '_' for easier debugging \n\nfunction collate(a, b) {\n\n if (a === b) {\n return 0;\n }\n\n a = normalizeKey(a);\n b = normalizeKey(b);\n\n var ai = collationIndex(a);\n var bi = collationIndex(b);\n if ((ai - bi) !== 0) {\n return ai - bi;\n }\n switch (typeof a) {\n case 'number':\n return a - b;\n case 'boolean':\n return a < b ? -1 : 1;\n case 'string':\n return stringCollate(a, b);\n }\n return Array.isArray(a) ? arrayCollate(a, b) : objectCollate(a, b);\n}\n\n// couch considers null/NaN/Infinity/-Infinity === undefined,\n// for the purposes of mapreduce indexes. also, dates get stringified.\nfunction normalizeKey(key) {\n switch (typeof key) {\n case 'undefined':\n return null;\n case 'number':\n if (key === Infinity || key === -Infinity || isNaN(key)) {\n return null;\n }\n return key;\n case 'object':\n var origKey = key;\n if (Array.isArray(key)) {\n var len = key.length;\n key = new Array(len);\n for (var i = 0; i < len; i++) {\n key[i] = normalizeKey(origKey[i]);\n }\n /* istanbul ignore next */\n } else if (key instanceof Date) {\n return key.toJSON();\n } else if (key !== null) { // generic object\n key = {};\n for (var k in origKey) {\n if (origKey.hasOwnProperty(k)) {\n var val = origKey[k];\n if (typeof val !== 'undefined') {\n key[k] = normalizeKey(val);\n }\n }\n }\n }\n }\n return key;\n}\n\nfunction indexify(key) {\n if (key !== null) {\n switch (typeof key) {\n case 'boolean':\n return key ? 1 : 0;\n case 'number':\n return numToIndexableString(key);\n case 'string':\n // We've to be sure that key does not contain \\u0000\n // Do order-preserving replacements:\n // 0 -> 1, 1\n // 1 -> 1, 2\n // 2 -> 2, 2\n /* eslint-disable no-control-regex */\n return key\n .replace(/\\u0002/g, '\\u0002\\u0002')\n .replace(/\\u0001/g, '\\u0001\\u0002')\n .replace(/\\u0000/g, '\\u0001\\u0001');\n /* eslint-enable no-control-regex */\n case 'object':\n var isArray = Array.isArray(key);\n var arr = isArray ? key : Object.keys(key);\n var i = -1;\n var len = arr.length;\n var result = '';\n if (isArray) {\n while (++i < len) {\n result += toIndexableString(arr[i]);\n }\n } else {\n while (++i < len) {\n var objKey = arr[i];\n result += toIndexableString(objKey) +\n toIndexableString(key[objKey]);\n }\n }\n return result;\n }\n }\n return '';\n}\n\n// convert the given key to a string that would be appropriate\n// for lexical sorting, e.g. within a database, where the\n// sorting is the same given by the collate() function.\nfunction toIndexableString(key) {\n var zero = '\\u0000';\n key = normalizeKey(key);\n return collationIndex(key) + SEP + indexify(key) + zero;\n}\n\nfunction parseNumber(str, i) {\n var originalIdx = i;\n var num;\n var zero = str[i] === '1';\n if (zero) {\n num = 0;\n i++;\n } else {\n var neg = str[i] === '0';\n i++;\n var numAsString = '';\n var magAsString = str.substring(i, i + MAGNITUDE_DIGITS);\n var magnitude = parseInt(magAsString, 10) + MIN_MAGNITUDE;\n /* istanbul ignore next */\n if (neg) {\n magnitude = -magnitude;\n }\n i += MAGNITUDE_DIGITS;\n while (true) {\n var ch = str[i];\n if (ch === '\\u0000') {\n break;\n } else {\n numAsString += ch;\n }\n i++;\n }\n numAsString = numAsString.split('.');\n if (numAsString.length === 1) {\n num = parseInt(numAsString, 10);\n } else {\n /* istanbul ignore next */\n num = parseFloat(numAsString[0] + '.' + numAsString[1]);\n }\n /* istanbul ignore next */\n if (neg) {\n num = num - 10;\n }\n /* istanbul ignore next */\n if (magnitude !== 0) {\n // parseFloat is more reliable than pow due to rounding errors\n // e.g. Number.MAX_VALUE would return Infinity if we did\n // num * Math.pow(10, magnitude);\n num = parseFloat(num + 'e' + magnitude);\n }\n }\n return {num: num, length : i - originalIdx};\n}\n\n// move up the stack while parsing\n// this function moved outside of parseIndexableString for performance\nfunction pop(stack, metaStack) {\n var obj = stack.pop();\n\n if (metaStack.length) {\n var lastMetaElement = metaStack[metaStack.length - 1];\n if (obj === lastMetaElement.element) {\n // popping a meta-element, e.g. an object whose value is another object\n metaStack.pop();\n lastMetaElement = metaStack[metaStack.length - 1];\n }\n var element = lastMetaElement.element;\n var lastElementIndex = lastMetaElement.index;\n if (Array.isArray(element)) {\n element.push(obj);\n } else if (lastElementIndex === stack.length - 2) { // obj with key+value\n var key = stack.pop();\n element[key] = obj;\n } else {\n stack.push(obj); // obj with key only\n }\n }\n}\n\nfunction parseIndexableString(str) {\n var stack = [];\n var metaStack = []; // stack for arrays and objects\n var i = 0;\n\n /*eslint no-constant-condition: [\"error\", { \"checkLoops\": false }]*/\n while (true) {\n var collationIndex = str[i++];\n if (collationIndex === '\\u0000') {\n if (stack.length === 1) {\n return stack.pop();\n } else {\n pop(stack, metaStack);\n continue;\n }\n }\n switch (collationIndex) {\n case '1':\n stack.push(null);\n break;\n case '2':\n stack.push(str[i] === '1');\n i++;\n break;\n case '3':\n var parsedNum = parseNumber(str, i);\n stack.push(parsedNum.num);\n i += parsedNum.length;\n break;\n case '4':\n var parsedStr = '';\n /*eslint no-constant-condition: [\"error\", { \"checkLoops\": false }]*/\n while (true) {\n var ch = str[i];\n if (ch === '\\u0000') {\n break;\n }\n parsedStr += ch;\n i++;\n }\n // perform the reverse of the order-preserving replacement\n // algorithm (see above)\n /* eslint-disable no-control-regex */\n parsedStr = parsedStr.replace(/\\u0001\\u0001/g, '\\u0000')\n .replace(/\\u0001\\u0002/g, '\\u0001')\n .replace(/\\u0002\\u0002/g, '\\u0002');\n /* eslint-enable no-control-regex */\n stack.push(parsedStr);\n break;\n case '5':\n var arrayElement = { element: [], index: stack.length };\n stack.push(arrayElement.element);\n metaStack.push(arrayElement);\n break;\n case '6':\n var objElement = { element: {}, index: stack.length };\n stack.push(objElement.element);\n metaStack.push(objElement);\n break;\n /* istanbul ignore next */\n default:\n throw new Error(\n 'bad collationIndex or unexpectedly reached end of input: ' +\n collationIndex);\n }\n }\n}\n\nfunction arrayCollate(a, b) {\n var len = Math.min(a.length, b.length);\n for (var i = 0; i < len; i++) {\n var sort = collate(a[i], b[i]);\n if (sort !== 0) {\n return sort;\n }\n }\n return (a.length === b.length) ? 0 :\n (a.length > b.length) ? 1 : -1;\n}\nfunction stringCollate(a, b) {\n // See: https://github.com/daleharvey/pouchdb/issues/40\n // This is incompatible with the CouchDB implementation, but its the\n // best we can do for now\n return (a === b) ? 0 : ((a > b) ? 1 : -1);\n}\nfunction objectCollate(a, b) {\n var ak = Object.keys(a), bk = Object.keys(b);\n var len = Math.min(ak.length, bk.length);\n for (var i = 0; i < len; i++) {\n // First sort the keys\n var sort = collate(ak[i], bk[i]);\n if (sort !== 0) {\n return sort;\n }\n // if the keys are equal sort the values\n sort = collate(a[ak[i]], b[bk[i]]);\n if (sort !== 0) {\n return sort;\n }\n\n }\n return (ak.length === bk.length) ? 0 :\n (ak.length > bk.length) ? 1 : -1;\n}\n// The collation is defined by erlangs ordered terms\n// the atoms null, true, false come first, then numbers, strings,\n// arrays, then objects\n// null/undefined/NaN/Infinity/-Infinity are all considered null\nfunction collationIndex(x) {\n var id = ['boolean', 'number', 'string', 'object'];\n var idx = id.indexOf(typeof x);\n //false if -1 otherwise true, but fast!!!!1\n if (~idx) {\n if (x === null) {\n return 1;\n }\n if (Array.isArray(x)) {\n return 5;\n }\n return idx < 3 ? (idx + 2) : (idx + 3);\n }\n /* istanbul ignore next */\n if (Array.isArray(x)) {\n return 5;\n }\n}\n\n// conversion:\n// x yyy zz...zz\n// x = 0 for negative, 1 for 0, 2 for positive\n// y = exponent (for negative numbers negated) moved so that it's >= 0\n// z = mantisse\nfunction numToIndexableString(num) {\n\n if (num === 0) {\n return '1';\n }\n\n // convert number to exponential format for easier and\n // more succinct string sorting\n var expFormat = num.toExponential().split(/e\\+?/);\n var magnitude = parseInt(expFormat[1], 10);\n\n var neg = num < 0;\n\n var result = neg ? '0' : '2';\n\n // first sort by magnitude\n // it's easier if all magnitudes are positive\n var magForComparison = ((neg ? -magnitude : magnitude) - MIN_MAGNITUDE);\n var magString = padLeft((magForComparison).toString(), '0', MAGNITUDE_DIGITS);\n\n result += SEP + magString;\n\n // then sort by the factor\n var factor = Math.abs(parseFloat(expFormat[0])); // [1..10)\n /* istanbul ignore next */\n if (neg) { // for negative reverse ordering\n factor = 10 - factor;\n }\n\n var factorStr = factor.toFixed(20);\n\n // strip zeros from the end\n factorStr = factorStr.replace(/\\.?0+$/, '');\n\n result += SEP + factorStr;\n\n return result;\n}\n\n// create a comparator based on the sort object\nfunction createFieldSorter(sort) {\n\n function getFieldValuesAsArray(doc) {\n return sort.map(function (sorting) {\n var fieldName = getKey(sorting);\n var parsedField = parseField(fieldName);\n var docFieldValue = getFieldFromDoc(doc, parsedField);\n return docFieldValue;\n });\n }\n\n return function (aRow, bRow) {\n var aFieldValues = getFieldValuesAsArray(aRow.doc);\n var bFieldValues = getFieldValuesAsArray(bRow.doc);\n var collation = collate(aFieldValues, bFieldValues);\n if (collation !== 0) {\n return collation;\n }\n // this is what mango seems to do\n return compare$1(aRow.doc._id, bRow.doc._id);\n };\n}\n\nfunction filterInMemoryFields(rows, requestDef, inMemoryFields) {\n rows = rows.filter(function (row) {\n return rowFilter(row.doc, requestDef.selector, inMemoryFields);\n });\n\n if (requestDef.sort) {\n // in-memory sort\n var fieldSorter = createFieldSorter(requestDef.sort);\n rows = rows.sort(fieldSorter);\n if (typeof requestDef.sort[0] !== 'string' &&\n getValue(requestDef.sort[0]) === 'desc') {\n rows = rows.reverse();\n }\n }\n\n if ('limit' in requestDef || 'skip' in requestDef) {\n // have to do the limit in-memory\n var skip = requestDef.skip || 0;\n var limit = ('limit' in requestDef ? requestDef.limit : rows.length) + skip;\n rows = rows.slice(skip, limit);\n }\n return rows;\n}\n\nfunction rowFilter(doc, selector, inMemoryFields) {\n return inMemoryFields.every(function (field) {\n var matcher = selector[field];\n var parsedField = parseField(field);\n var docFieldValue = getFieldFromDoc(doc, parsedField);\n if (isCombinationalField(field)) {\n return matchCominationalSelector(field, matcher, doc);\n }\n\n return matchSelector(matcher, doc, parsedField, docFieldValue);\n });\n}\n\nfunction matchSelector(matcher, doc, parsedField, docFieldValue) {\n if (!matcher) {\n // no filtering necessary; this field is just needed for sorting\n return true;\n }\n\n // is matcher an object, if so continue recursion\n if (typeof matcher === 'object') {\n return Object.keys(matcher).every(function (userOperator) {\n var userValue = matcher[userOperator];\n return match(userOperator, doc, userValue, parsedField, docFieldValue);\n });\n }\n\n // no more depth, No need to recurse further\n return matcher === docFieldValue;\n}\n\nfunction matchCominationalSelector(field, matcher, doc) {\n\n if (field === '$or') {\n return matcher.some(function (orMatchers) {\n return rowFilter(doc, orMatchers, Object.keys(orMatchers));\n });\n }\n\n if (field === '$not') {\n return !rowFilter(doc, matcher, Object.keys(matcher));\n }\n\n //`$nor`\n return !matcher.find(function (orMatchers) {\n return rowFilter(doc, orMatchers, Object.keys(orMatchers));\n });\n\n}\n\nfunction match(userOperator, doc, userValue, parsedField, docFieldValue) {\n if (!matchers[userOperator]) {\n throw new Error('unknown operator \"' + userOperator +\n '\" - should be one of $eq, $lte, $lt, $gt, $gte, $exists, $ne, $in, ' +\n '$nin, $size, $mod, $regex, $elemMatch, $type, $allMatch or $all');\n }\n return matchers[userOperator](doc, userValue, parsedField, docFieldValue);\n}\n\nfunction fieldExists(docFieldValue) {\n return typeof docFieldValue !== 'undefined' && docFieldValue !== null;\n}\n\nfunction fieldIsNotUndefined(docFieldValue) {\n return typeof docFieldValue !== 'undefined';\n}\n\nfunction modField(docFieldValue, userValue) {\n var divisor = userValue[0];\n var mod = userValue[1];\n if (divisor === 0) {\n throw new Error('Bad divisor, cannot divide by zero');\n }\n\n if (parseInt(divisor, 10) !== divisor ) {\n throw new Error('Divisor is not an integer');\n }\n\n if (parseInt(mod, 10) !== mod ) {\n throw new Error('Modulus is not an integer');\n }\n\n if (parseInt(docFieldValue, 10) !== docFieldValue) {\n return false;\n }\n\n return docFieldValue % divisor === mod;\n}\n\nfunction arrayContainsValue(docFieldValue, userValue) {\n return userValue.some(function (val) {\n if (docFieldValue instanceof Array) {\n return docFieldValue.indexOf(val) > -1;\n }\n\n return docFieldValue === val;\n });\n}\n\nfunction arrayContainsAllValues(docFieldValue, userValue) {\n return userValue.every(function (val) {\n return docFieldValue.indexOf(val) > -1;\n });\n}\n\nfunction arraySize(docFieldValue, userValue) {\n return docFieldValue.length === userValue;\n}\n\nfunction regexMatch(docFieldValue, userValue) {\n var re = new RegExp(userValue);\n\n return re.test(docFieldValue);\n}\n\nfunction typeMatch(docFieldValue, userValue) {\n\n switch (userValue) {\n case 'null':\n return docFieldValue === null;\n case 'boolean':\n return typeof (docFieldValue) === 'boolean';\n case 'number':\n return typeof (docFieldValue) === 'number';\n case 'string':\n return typeof (docFieldValue) === 'string';\n case 'array':\n return docFieldValue instanceof Array;\n case 'object':\n return ({}).toString.call(docFieldValue) === '[object Object]';\n }\n\n throw new Error(userValue + ' not supported as a type.' +\n 'Please use one of object, string, array, number, boolean or null.');\n\n}\n\nvar matchers = {\n\n '$elemMatch': function (doc, userValue, parsedField, docFieldValue) {\n if (!Array.isArray(docFieldValue)) {\n return false;\n }\n\n if (docFieldValue.length === 0) {\n return false;\n }\n\n if (typeof docFieldValue[0] === 'object') {\n return docFieldValue.some(function (val) {\n return rowFilter(val, userValue, Object.keys(userValue));\n });\n }\n\n return docFieldValue.some(function (val) {\n return matchSelector(userValue, doc, parsedField, val);\n });\n },\n\n '$allMatch': function (doc, userValue, parsedField, docFieldValue) {\n if (!Array.isArray(docFieldValue)) {\n return false;\n }\n\n /* istanbul ignore next */\n if (docFieldValue.length === 0) {\n return false;\n }\n\n if (typeof docFieldValue[0] === 'object') {\n return docFieldValue.every(function (val) {\n return rowFilter(val, userValue, Object.keys(userValue));\n });\n }\n\n return docFieldValue.every(function (val) {\n return matchSelector(userValue, doc, parsedField, val);\n });\n },\n\n '$eq': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) === 0;\n },\n\n '$gte': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) >= 0;\n },\n\n '$gt': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) > 0;\n },\n\n '$lte': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) <= 0;\n },\n\n '$lt': function (doc, userValue, parsedField, docFieldValue) {\n return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) < 0;\n },\n\n '$exists': function (doc, userValue, parsedField, docFieldValue) {\n //a field that is null is still considered to exist\n if (userValue) {\n return fieldIsNotUndefined(docFieldValue);\n }\n\n return !fieldIsNotUndefined(docFieldValue);\n },\n\n '$mod': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && modField(docFieldValue, userValue);\n },\n\n '$ne': function (doc, userValue, parsedField, docFieldValue) {\n return userValue.every(function (neValue) {\n return collate(docFieldValue, neValue) !== 0;\n });\n },\n '$in': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && arrayContainsValue(docFieldValue, userValue);\n },\n\n '$nin': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && !arrayContainsValue(docFieldValue, userValue);\n },\n\n '$size': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && arraySize(docFieldValue, userValue);\n },\n\n '$all': function (doc, userValue, parsedField, docFieldValue) {\n return Array.isArray(docFieldValue) && arrayContainsAllValues(docFieldValue, userValue);\n },\n\n '$regex': function (doc, userValue, parsedField, docFieldValue) {\n return fieldExists(docFieldValue) && regexMatch(docFieldValue, userValue);\n },\n\n '$type': function (doc, userValue, parsedField, docFieldValue) {\n return typeMatch(docFieldValue, userValue);\n }\n};\n\n// return true if the given doc matches the supplied selector\nfunction matchesSelector(doc, selector) {\n /* istanbul ignore if */\n if (typeof selector !== 'object') {\n // match the CouchDB error message\n throw new Error('Selector error: expected a JSON object');\n }\n\n selector = massageSelector(selector);\n var row = {\n 'doc': doc\n };\n\n var rowsMatched = filterInMemoryFields([row], { 'selector': selector }, Object.keys(selector));\n return rowsMatched && rowsMatched.length === 1;\n}\n\nfunction evalFilter(input) {\n return scopeEval('\"use strict\";\\nreturn ' + input + ';', {});\n}\n\nfunction evalView(input) {\n var code = [\n 'return function(doc) {',\n ' \"use strict\";',\n ' var emitted = false;',\n ' var emit = function (a, b) {',\n ' emitted = true;',\n ' };',\n ' var view = ' + input + ';',\n ' view(doc);',\n ' if (emitted) {',\n ' return true;',\n ' }',\n '};'\n ].join('\\n');\n\n return scopeEval(code, {});\n}\n\nfunction validate(opts, callback) {\n if (opts.selector) {\n if (opts.filter && opts.filter !== '_selector') {\n var filterName = typeof opts.filter === 'string' ?\n opts.filter : 'function';\n return callback(new Error('selector invalid for filter \"' + filterName + '\"'));\n }\n }\n callback();\n}\n\nfunction normalize(opts) {\n if (opts.view && !opts.filter) {\n opts.filter = '_view';\n }\n\n if (opts.selector && !opts.filter) {\n opts.filter = '_selector';\n }\n\n if (opts.filter && typeof opts.filter === 'string') {\n if (opts.filter === '_view') {\n opts.view = normalizeDesignDocFunctionName(opts.view);\n } else {\n opts.filter = normalizeDesignDocFunctionName(opts.filter);\n }\n }\n}\n\nfunction shouldFilter(changesHandler, opts) {\n return opts.filter && typeof opts.filter === 'string' &&\n !opts.doc_ids && !isRemote(changesHandler.db);\n}\n\nfunction filter(changesHandler, opts) {\n var callback = opts.complete;\n if (opts.filter === '_view') {\n if (!opts.view || typeof opts.view !== 'string') {\n var err = createError(BAD_REQUEST,\n '`view` filter parameter not found or invalid.');\n return callback(err);\n }\n // fetch a view from a design doc, make it behave like a filter\n var viewName = parseDesignDocFunctionName(opts.view);\n changesHandler.db.get('_design/' + viewName[0], function (err, ddoc) {\n /* istanbul ignore if */\n if (changesHandler.isCancelled) {\n return callback(null, {status: 'cancelled'});\n }\n /* istanbul ignore next */\n if (err) {\n return callback(generateErrorFromResponse(err));\n }\n var mapFun = ddoc && ddoc.views && ddoc.views[viewName[1]] &&\n ddoc.views[viewName[1]].map;\n if (!mapFun) {\n return callback(createError(MISSING_DOC,\n (ddoc.views ? 'missing json key: ' + viewName[1] :\n 'missing json key: views')));\n }\n opts.filter = evalView(mapFun);\n changesHandler.doChanges(opts);\n });\n } else if (opts.selector) {\n opts.filter = function (doc) {\n return matchesSelector(doc, opts.selector);\n };\n changesHandler.doChanges(opts);\n } else {\n // fetch a filter from a design doc\n var filterName = parseDesignDocFunctionName(opts.filter);\n changesHandler.db.get('_design/' + filterName[0], function (err, ddoc) {\n /* istanbul ignore if */\n if (changesHandler.isCancelled) {\n return callback(null, {status: 'cancelled'});\n }\n /* istanbul ignore next */\n if (err) {\n return callback(generateErrorFromResponse(err));\n }\n var filterFun = ddoc && ddoc.filters && ddoc.filters[filterName[1]];\n if (!filterFun) {\n return callback(createError(MISSING_DOC,\n ((ddoc && ddoc.filters) ? 'missing json key: ' + filterName[1]\n : 'missing json key: filters')));\n }\n opts.filter = evalFilter(filterFun);\n changesHandler.doChanges(opts);\n });\n }\n}\n\nfunction applyChangesFilterPlugin(PouchDB) {\n PouchDB._changesFilterPlugin = {\n validate: validate,\n normalize: normalize,\n shouldFilter: shouldFilter,\n filter: filter\n };\n}\n\n// TODO: remove from pouchdb-core (breaking)\nPouchDB.plugin(applyChangesFilterPlugin);\n\nPouchDB.version = version;\n\nfunction toObject(array) {\n return array.reduce(function (obj, item) {\n obj[item] = true;\n return obj;\n }, {});\n}\n// List of top level reserved words for doc\nvar reservedWords = toObject([\n '_id',\n '_rev',\n '_attachments',\n '_deleted',\n '_revisions',\n '_revs_info',\n '_conflicts',\n '_deleted_conflicts',\n '_local_seq',\n '_rev_tree',\n //replication documents\n '_replication_id',\n '_replication_state',\n '_replication_state_time',\n '_replication_state_reason',\n '_replication_stats',\n // Specific to Couchbase Sync Gateway\n '_removed'\n]);\n\n// List of reserved words that should end up the document\nvar dataWords = toObject([\n '_attachments',\n //replication documents\n '_replication_id',\n '_replication_state',\n '_replication_state_time',\n '_replication_state_reason',\n '_replication_stats'\n]);\n\nfunction parseRevisionInfo(rev$$1) {\n if (!/^\\d+-/.test(rev$$1)) {\n return createError(INVALID_REV);\n }\n var idx = rev$$1.indexOf('-');\n var left = rev$$1.substring(0, idx);\n var right = rev$$1.substring(idx + 1);\n return {\n prefix: parseInt(left, 10),\n id: right\n };\n}\n\nfunction makeRevTreeFromRevisions(revisions, opts) {\n var pos = revisions.start - revisions.ids.length + 1;\n\n var revisionIds = revisions.ids;\n var ids = [revisionIds[0], opts, []];\n\n for (var i = 1, len = revisionIds.length; i < len; i++) {\n ids = [revisionIds[i], {status: 'missing'}, [ids]];\n }\n\n return [{\n pos: pos,\n ids: ids\n }];\n}\n\n// Preprocess documents, parse their revisions, assign an id and a\n// revision for new writes that are missing them, etc\nfunction parseDoc(doc, newEdits, dbOpts) {\n if (!dbOpts) {\n dbOpts = {\n deterministic_revs: true\n };\n }\n\n var nRevNum;\n var newRevId;\n var revInfo;\n var opts = {status: 'available'};\n if (doc._deleted) {\n opts.deleted = true;\n }\n\n if (newEdits) {\n if (!doc._id) {\n doc._id = uuid();\n }\n newRevId = rev(doc, dbOpts.deterministic_revs);\n if (doc._rev) {\n revInfo = parseRevisionInfo(doc._rev);\n if (revInfo.error) {\n return revInfo;\n }\n doc._rev_tree = [{\n pos: revInfo.prefix,\n ids: [revInfo.id, {status: 'missing'}, [[newRevId, opts, []]]]\n }];\n nRevNum = revInfo.prefix + 1;\n } else {\n doc._rev_tree = [{\n pos: 1,\n ids : [newRevId, opts, []]\n }];\n nRevNum = 1;\n }\n } else {\n if (doc._revisions) {\n doc._rev_tree = makeRevTreeFromRevisions(doc._revisions, opts);\n nRevNum = doc._revisions.start;\n newRevId = doc._revisions.ids[0];\n }\n if (!doc._rev_tree) {\n revInfo = parseRevisionInfo(doc._rev);\n if (revInfo.error) {\n return revInfo;\n }\n nRevNum = revInfo.prefix;\n newRevId = revInfo.id;\n doc._rev_tree = [{\n pos: nRevNum,\n ids: [newRevId, opts, []]\n }];\n }\n }\n\n invalidIdError(doc._id);\n\n doc._rev = nRevNum + '-' + newRevId;\n\n var result = {metadata : {}, data : {}};\n for (var key in doc) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(doc, key)) {\n var specialKey = key[0] === '_';\n if (specialKey && !reservedWords[key]) {\n var error = createError(DOC_VALIDATION, key);\n error.message = DOC_VALIDATION.message + ': ' + key;\n throw error;\n } else if (specialKey && !dataWords[key]) {\n result.metadata[key.slice(1)] = doc[key];\n } else {\n result.data[key] = doc[key];\n }\n }\n }\n return result;\n}\n\nfunction parseBase64(data) {\n try {\n return thisAtob(data);\n } catch (e) {\n var err = createError(BAD_ARG,\n 'Attachment is not a valid base64 string');\n return {error: err};\n }\n}\n\nfunction preprocessString(att, blobType, callback) {\n var asBinary = parseBase64(att.data);\n if (asBinary.error) {\n return callback(asBinary.error);\n }\n\n att.length = asBinary.length;\n if (blobType === 'blob') {\n att.data = binStringToBluffer(asBinary, att.content_type);\n } else if (blobType === 'base64') {\n att.data = thisBtoa(asBinary);\n } else { // binary\n att.data = asBinary;\n }\n binaryMd5(asBinary, function (result) {\n att.digest = 'md5-' + result;\n callback();\n });\n}\n\nfunction preprocessBlob(att, blobType, callback) {\n binaryMd5(att.data, function (md5) {\n att.digest = 'md5-' + md5;\n // size is for blobs (browser), length is for buffers (node)\n att.length = att.data.size || att.data.length || 0;\n if (blobType === 'binary') {\n blobToBinaryString(att.data, function (binString) {\n att.data = binString;\n callback();\n });\n } else if (blobType === 'base64') {\n blobToBase64(att.data, function (b64) {\n att.data = b64;\n callback();\n });\n } else {\n callback();\n }\n });\n}\n\nfunction preprocessAttachment(att, blobType, callback) {\n if (att.stub) {\n return callback();\n }\n if (typeof att.data === 'string') { // input is a base64 string\n preprocessString(att, blobType, callback);\n } else { // input is a blob\n preprocessBlob(att, blobType, callback);\n }\n}\n\nfunction preprocessAttachments(docInfos, blobType, callback) {\n\n if (!docInfos.length) {\n return callback();\n }\n\n var docv = 0;\n var overallErr;\n\n docInfos.forEach(function (docInfo) {\n var attachments = docInfo.data && docInfo.data._attachments ?\n Object.keys(docInfo.data._attachments) : [];\n var recv = 0;\n\n if (!attachments.length) {\n return done();\n }\n\n function processedAttachment(err) {\n overallErr = err;\n recv++;\n if (recv === attachments.length) {\n done();\n }\n }\n\n for (var key in docInfo.data._attachments) {\n if (docInfo.data._attachments.hasOwnProperty(key)) {\n preprocessAttachment(docInfo.data._attachments[key],\n blobType, processedAttachment);\n }\n }\n });\n\n function done() {\n docv++;\n if (docInfos.length === docv) {\n if (overallErr) {\n callback(overallErr);\n } else {\n callback();\n }\n }\n }\n}\n\nfunction updateDoc(revLimit, prev, docInfo, results,\n i, cb, writeDoc, newEdits) {\n\n if (revExists(prev.rev_tree, docInfo.metadata.rev) && !newEdits) {\n results[i] = docInfo;\n return cb();\n }\n\n // sometimes this is pre-calculated. historically not always\n var previousWinningRev = prev.winningRev || winningRev(prev);\n var previouslyDeleted = 'deleted' in prev ? prev.deleted :\n isDeleted(prev, previousWinningRev);\n var deleted = 'deleted' in docInfo.metadata ? docInfo.metadata.deleted :\n isDeleted(docInfo.metadata);\n var isRoot = /^1-/.test(docInfo.metadata.rev);\n\n if (previouslyDeleted && !deleted && newEdits && isRoot) {\n var newDoc = docInfo.data;\n newDoc._rev = previousWinningRev;\n newDoc._id = docInfo.metadata.id;\n docInfo = parseDoc(newDoc, newEdits);\n }\n\n var merged = merge(prev.rev_tree, docInfo.metadata.rev_tree[0], revLimit);\n\n var inConflict = newEdits && ((\n (previouslyDeleted && deleted && merged.conflicts !== 'new_leaf') ||\n (!previouslyDeleted && merged.conflicts !== 'new_leaf') ||\n (previouslyDeleted && !deleted && merged.conflicts === 'new_branch')));\n\n if (inConflict) {\n var err = createError(REV_CONFLICT);\n results[i] = err;\n return cb();\n }\n\n var newRev = docInfo.metadata.rev;\n docInfo.metadata.rev_tree = merged.tree;\n docInfo.stemmedRevs = merged.stemmedRevs || [];\n /* istanbul ignore else */\n if (prev.rev_map) {\n docInfo.metadata.rev_map = prev.rev_map; // used only by leveldb\n }\n\n // recalculate\n var winningRev$$1 = winningRev(docInfo.metadata);\n var winningRevIsDeleted = isDeleted(docInfo.metadata, winningRev$$1);\n\n // calculate the total number of documents that were added/removed,\n // from the perspective of total_rows/doc_count\n var delta = (previouslyDeleted === winningRevIsDeleted) ? 0 :\n previouslyDeleted < winningRevIsDeleted ? -1 : 1;\n\n var newRevIsDeleted;\n if (newRev === winningRev$$1) {\n // if the new rev is the same as the winning rev, we can reuse that value\n newRevIsDeleted = winningRevIsDeleted;\n } else {\n // if they're not the same, then we need to recalculate\n newRevIsDeleted = isDeleted(docInfo.metadata, newRev);\n }\n\n writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted,\n true, delta, i, cb);\n}\n\nfunction rootIsMissing(docInfo) {\n return docInfo.metadata.rev_tree[0].ids[1].status === 'missing';\n}\n\nfunction processDocs(revLimit, docInfos, api, fetchedDocs, tx, results,\n writeDoc, opts, overallCallback) {\n\n // Default to 1000 locally\n revLimit = revLimit || 1000;\n\n function insertDoc(docInfo, resultsIdx, callback) {\n // Cant insert new deleted documents\n var winningRev$$1 = winningRev(docInfo.metadata);\n var deleted = isDeleted(docInfo.metadata, winningRev$$1);\n if ('was_delete' in opts && deleted) {\n results[resultsIdx] = createError(MISSING_DOC, 'deleted');\n return callback();\n }\n\n // 4712 - detect whether a new document was inserted with a _rev\n var inConflict = newEdits && rootIsMissing(docInfo);\n\n if (inConflict) {\n var err = createError(REV_CONFLICT);\n results[resultsIdx] = err;\n return callback();\n }\n\n var delta = deleted ? 0 : 1;\n\n writeDoc(docInfo, winningRev$$1, deleted, deleted, false,\n delta, resultsIdx, callback);\n }\n\n var newEdits = opts.new_edits;\n var idsToDocs = new ExportedMap();\n\n var docsDone = 0;\n var docsToDo = docInfos.length;\n\n function checkAllDocsDone() {\n if (++docsDone === docsToDo && overallCallback) {\n overallCallback();\n }\n }\n\n docInfos.forEach(function (currentDoc, resultsIdx) {\n\n if (currentDoc._id && isLocalId(currentDoc._id)) {\n var fun = currentDoc._deleted ? '_removeLocal' : '_putLocal';\n api[fun](currentDoc, {ctx: tx}, function (err, res) {\n results[resultsIdx] = err || res;\n checkAllDocsDone();\n });\n return;\n }\n\n var id = currentDoc.metadata.id;\n if (idsToDocs.has(id)) {\n docsToDo--; // duplicate\n idsToDocs.get(id).push([currentDoc, resultsIdx]);\n } else {\n idsToDocs.set(id, [[currentDoc, resultsIdx]]);\n }\n });\n\n // in the case of new_edits, the user can provide multiple docs\n // with the same id. these need to be processed sequentially\n idsToDocs.forEach(function (docs, id) {\n var numDone = 0;\n\n function docWritten() {\n if (++numDone < docs.length) {\n nextDoc();\n } else {\n checkAllDocsDone();\n }\n }\n function nextDoc() {\n var value = docs[numDone];\n var currentDoc = value[0];\n var resultsIdx = value[1];\n\n if (fetchedDocs.has(id)) {\n updateDoc(revLimit, fetchedDocs.get(id), currentDoc, results,\n resultsIdx, docWritten, writeDoc, newEdits);\n } else {\n // Ensure stemming applies to new writes as well\n var merged = merge([], currentDoc.metadata.rev_tree[0], revLimit);\n currentDoc.metadata.rev_tree = merged.tree;\n currentDoc.stemmedRevs = merged.stemmedRevs || [];\n insertDoc(currentDoc, resultsIdx, docWritten);\n }\n }\n nextDoc();\n });\n}\n\n// IndexedDB requires a versioned database structure, so we use the\n// version here to manage migrations.\nvar ADAPTER_VERSION = 5;\n\n// The object stores created for each database\n// DOC_STORE stores the document meta data, its revision history and state\n// Keyed by document id\nvar DOC_STORE = 'document-store';\n// BY_SEQ_STORE stores a particular version of a document, keyed by its\n// sequence id\nvar BY_SEQ_STORE = 'by-sequence';\n// Where we store attachments\nvar ATTACH_STORE = 'attach-store';\n// Where we store many-to-many relations\n// between attachment digests and seqs\nvar ATTACH_AND_SEQ_STORE = 'attach-seq-store';\n\n// Where we store database-wide meta data in a single record\n// keyed by id: META_STORE\nvar META_STORE = 'meta-store';\n// Where we store local documents\nvar LOCAL_STORE = 'local-store';\n// Where we detect blob support\nvar DETECT_BLOB_SUPPORT_STORE = 'detect-blob-support';\n\nfunction safeJsonParse(str) {\n // This try/catch guards against stack overflow errors.\n // JSON.parse() is faster than vuvuzela.parse() but vuvuzela\n // cannot overflow.\n try {\n return JSON.parse(str);\n } catch (e) {\n /* istanbul ignore next */\n return vuvuzela.parse(str);\n }\n}\n\nfunction safeJsonStringify(json) {\n try {\n return JSON.stringify(json);\n } catch (e) {\n /* istanbul ignore next */\n return vuvuzela.stringify(json);\n }\n}\n\nfunction idbError(callback) {\n return function (evt) {\n var message = 'unknown_error';\n if (evt.target && evt.target.error) {\n message = evt.target.error.name || evt.target.error.message;\n }\n callback(createError(IDB_ERROR, message, evt.type));\n };\n}\n\n// Unfortunately, the metadata has to be stringified\n// when it is put into the database, because otherwise\n// IndexedDB can throw errors for deeply-nested objects.\n// Originally we just used JSON.parse/JSON.stringify; now\n// we use this custom vuvuzela library that avoids recursion.\n// If we could do it all over again, we'd probably use a\n// format for the revision trees other than JSON.\nfunction encodeMetadata(metadata, winningRev, deleted) {\n return {\n data: safeJsonStringify(metadata),\n winningRev: winningRev,\n deletedOrLocal: deleted ? '1' : '0',\n seq: metadata.seq, // highest seq for this doc\n id: metadata.id\n };\n}\n\nfunction decodeMetadata(storedObject) {\n if (!storedObject) {\n return null;\n }\n var metadata = safeJsonParse(storedObject.data);\n metadata.winningRev = storedObject.winningRev;\n metadata.deleted = storedObject.deletedOrLocal === '1';\n metadata.seq = storedObject.seq;\n return metadata;\n}\n\n// read the doc back out from the database. we don't store the\n// _id or _rev because we already have _doc_id_rev.\nfunction decodeDoc(doc) {\n if (!doc) {\n return doc;\n }\n var idx = doc._doc_id_rev.lastIndexOf(':');\n doc._id = doc._doc_id_rev.substring(0, idx - 1);\n doc._rev = doc._doc_id_rev.substring(idx + 1);\n delete doc._doc_id_rev;\n return doc;\n}\n\n// Read a blob from the database, encoding as necessary\n// and translating from base64 if the IDB doesn't support\n// native Blobs\nfunction readBlobData(body, type, asBlob, callback) {\n if (asBlob) {\n if (!body) {\n callback(createBlob([''], {type: type}));\n } else if (typeof body !== 'string') { // we have blob support\n callback(body);\n } else { // no blob support\n callback(b64ToBluffer(body, type));\n }\n } else { // as base64 string\n if (!body) {\n callback('');\n } else if (typeof body !== 'string') { // we have blob support\n readAsBinaryString(body, function (binary) {\n callback(thisBtoa(binary));\n });\n } else { // no blob support\n callback(body);\n }\n }\n}\n\nfunction fetchAttachmentsIfNecessary(doc, opts, txn, cb) {\n var attachments = Object.keys(doc._attachments || {});\n if (!attachments.length) {\n return cb && cb();\n }\n var numDone = 0;\n\n function checkDone() {\n if (++numDone === attachments.length && cb) {\n cb();\n }\n }\n\n function fetchAttachment(doc, att) {\n var attObj = doc._attachments[att];\n var digest = attObj.digest;\n var req = txn.objectStore(ATTACH_STORE).get(digest);\n req.onsuccess = function (e) {\n attObj.body = e.target.result.body;\n checkDone();\n };\n }\n\n attachments.forEach(function (att) {\n if (opts.attachments && opts.include_docs) {\n fetchAttachment(doc, att);\n } else {\n doc._attachments[att].stub = true;\n checkDone();\n }\n });\n}\n\n// IDB-specific postprocessing necessary because\n// we don't know whether we stored a true Blob or\n// a base64-encoded string, and if it's a Blob it\n// needs to be read outside of the transaction context\nfunction postProcessAttachments(results, asBlob) {\n return Promise.all(results.map(function (row) {\n if (row.doc && row.doc._attachments) {\n var attNames = Object.keys(row.doc._attachments);\n return Promise.all(attNames.map(function (att) {\n var attObj = row.doc._attachments[att];\n if (!('body' in attObj)) { // already processed\n return;\n }\n var body = attObj.body;\n var type = attObj.content_type;\n return new Promise(function (resolve) {\n readBlobData(body, type, asBlob, function (data) {\n row.doc._attachments[att] = $inject_Object_assign(\n pick(attObj, ['digest', 'content_type']),\n {data: data}\n );\n resolve();\n });\n });\n }));\n }\n }));\n}\n\nfunction compactRevs(revs, docId, txn) {\n\n var possiblyOrphanedDigests = [];\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var attStore = txn.objectStore(ATTACH_STORE);\n var attAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n var count = revs.length;\n\n function checkDone() {\n count--;\n if (!count) { // done processing all revs\n deleteOrphanedAttachments();\n }\n }\n\n function deleteOrphanedAttachments() {\n if (!possiblyOrphanedDigests.length) {\n return;\n }\n possiblyOrphanedDigests.forEach(function (digest) {\n var countReq = attAndSeqStore.index('digestSeq').count(\n IDBKeyRange.bound(\n digest + '::', digest + '::\\uffff', false, false));\n countReq.onsuccess = function (e) {\n var count = e.target.result;\n if (!count) {\n // orphaned\n attStore.delete(digest);\n }\n };\n });\n }\n\n revs.forEach(function (rev$$1) {\n var index = seqStore.index('_doc_id_rev');\n var key = docId + \"::\" + rev$$1;\n index.getKey(key).onsuccess = function (e) {\n var seq = e.target.result;\n if (typeof seq !== 'number') {\n return checkDone();\n }\n seqStore.delete(seq);\n\n var cursor = attAndSeqStore.index('seq')\n .openCursor(IDBKeyRange.only(seq));\n\n cursor.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var digest = cursor.value.digestSeq.split('::')[0];\n possiblyOrphanedDigests.push(digest);\n attAndSeqStore.delete(cursor.primaryKey);\n cursor.continue();\n } else { // done\n checkDone();\n }\n };\n };\n });\n}\n\nfunction openTransactionSafely(idb, stores, mode) {\n try {\n return {\n txn: idb.transaction(stores, mode)\n };\n } catch (err) {\n return {\n error: err\n };\n }\n}\n\nvar changesHandler = new Changes();\n\nfunction idbBulkDocs(dbOpts, req, opts, api, idb, callback) {\n var docInfos = req.docs;\n var txn;\n var docStore;\n var bySeqStore;\n var attachStore;\n var attachAndSeqStore;\n var metaStore;\n var docInfoError;\n var metaDoc;\n\n for (var i = 0, len = docInfos.length; i < len; i++) {\n var doc = docInfos[i];\n if (doc._id && isLocalId(doc._id)) {\n continue;\n }\n doc = docInfos[i] = parseDoc(doc, opts.new_edits, dbOpts);\n if (doc.error && !docInfoError) {\n docInfoError = doc;\n }\n }\n\n if (docInfoError) {\n return callback(docInfoError);\n }\n\n var allDocsProcessed = false;\n var docCountDelta = 0;\n var results = new Array(docInfos.length);\n var fetchedDocs = new ExportedMap();\n var preconditionErrored = false;\n var blobType = api._meta.blobSupport ? 'blob' : 'base64';\n\n preprocessAttachments(docInfos, blobType, function (err) {\n if (err) {\n return callback(err);\n }\n startTransaction();\n });\n\n function startTransaction() {\n\n var stores = [\n DOC_STORE, BY_SEQ_STORE,\n ATTACH_STORE,\n LOCAL_STORE, ATTACH_AND_SEQ_STORE,\n META_STORE\n ];\n var txnResult = openTransactionSafely(idb, stores, 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n txn.onabort = idbError(callback);\n txn.ontimeout = idbError(callback);\n txn.oncomplete = complete;\n docStore = txn.objectStore(DOC_STORE);\n bySeqStore = txn.objectStore(BY_SEQ_STORE);\n attachStore = txn.objectStore(ATTACH_STORE);\n attachAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n metaStore = txn.objectStore(META_STORE);\n\n metaStore.get(META_STORE).onsuccess = function (e) {\n metaDoc = e.target.result;\n updateDocCountIfReady();\n };\n\n verifyAttachments(function (err) {\n if (err) {\n preconditionErrored = true;\n return callback(err);\n }\n fetchExistingDocs();\n });\n }\n\n function onAllDocsProcessed() {\n allDocsProcessed = true;\n updateDocCountIfReady();\n }\n\n function idbProcessDocs() {\n processDocs(dbOpts.revs_limit, docInfos, api, fetchedDocs,\n txn, results, writeDoc, opts, onAllDocsProcessed);\n }\n\n function updateDocCountIfReady() {\n if (!metaDoc || !allDocsProcessed) {\n return;\n }\n // caching the docCount saves a lot of time in allDocs() and\n // info(), which is why we go to all the trouble of doing this\n metaDoc.docCount += docCountDelta;\n metaStore.put(metaDoc);\n }\n\n function fetchExistingDocs() {\n\n if (!docInfos.length) {\n return;\n }\n\n var numFetched = 0;\n\n function checkDone() {\n if (++numFetched === docInfos.length) {\n idbProcessDocs();\n }\n }\n\n function readMetadata(event) {\n var metadata = decodeMetadata(event.target.result);\n\n if (metadata) {\n fetchedDocs.set(metadata.id, metadata);\n }\n checkDone();\n }\n\n for (var i = 0, len = docInfos.length; i < len; i++) {\n var docInfo = docInfos[i];\n if (docInfo._id && isLocalId(docInfo._id)) {\n checkDone(); // skip local docs\n continue;\n }\n var req = docStore.get(docInfo.metadata.id);\n req.onsuccess = readMetadata;\n }\n }\n\n function complete() {\n if (preconditionErrored) {\n return;\n }\n\n changesHandler.notify(api._meta.name);\n callback(null, results);\n }\n\n function verifyAttachment(digest, callback) {\n\n var req = attachStore.get(digest);\n req.onsuccess = function (e) {\n if (!e.target.result) {\n var err = createError(MISSING_STUB,\n 'unknown stub attachment with digest ' +\n digest);\n err.status = 412;\n callback(err);\n } else {\n callback();\n }\n };\n }\n\n function verifyAttachments(finish) {\n\n\n var digests = [];\n docInfos.forEach(function (docInfo) {\n if (docInfo.data && docInfo.data._attachments) {\n Object.keys(docInfo.data._attachments).forEach(function (filename) {\n var att = docInfo.data._attachments[filename];\n if (att.stub) {\n digests.push(att.digest);\n }\n });\n }\n });\n if (!digests.length) {\n return finish();\n }\n var numDone = 0;\n var err;\n\n function checkDone() {\n if (++numDone === digests.length) {\n finish(err);\n }\n }\n digests.forEach(function (digest) {\n verifyAttachment(digest, function (attErr) {\n if (attErr && !err) {\n err = attErr;\n }\n checkDone();\n });\n });\n }\n\n function writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted,\n isUpdate, delta, resultsIdx, callback) {\n\n docInfo.metadata.winningRev = winningRev$$1;\n docInfo.metadata.deleted = winningRevIsDeleted;\n\n var doc = docInfo.data;\n doc._id = docInfo.metadata.id;\n doc._rev = docInfo.metadata.rev;\n\n if (newRevIsDeleted) {\n doc._deleted = true;\n }\n\n var hasAttachments = doc._attachments &&\n Object.keys(doc._attachments).length;\n if (hasAttachments) {\n return writeAttachments(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n\n docCountDelta += delta;\n updateDocCountIfReady();\n\n finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n\n function finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback) {\n\n var doc = docInfo.data;\n var metadata = docInfo.metadata;\n\n doc._doc_id_rev = metadata.id + '::' + metadata.rev;\n delete doc._id;\n delete doc._rev;\n\n function afterPutDoc(e) {\n var revsToDelete = docInfo.stemmedRevs || [];\n\n if (isUpdate && api.auto_compaction) {\n revsToDelete = revsToDelete.concat(compactTree(docInfo.metadata));\n }\n\n if (revsToDelete && revsToDelete.length) {\n compactRevs(revsToDelete, docInfo.metadata.id, txn);\n }\n\n metadata.seq = e.target.result;\n // Current _rev is calculated from _rev_tree on read\n // delete metadata.rev;\n var metadataToStore = encodeMetadata(metadata, winningRev$$1,\n winningRevIsDeleted);\n var metaDataReq = docStore.put(metadataToStore);\n metaDataReq.onsuccess = afterPutMetadata;\n }\n\n function afterPutDocError(e) {\n // ConstraintError, need to update, not put (see #1638 for details)\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n var index = bySeqStore.index('_doc_id_rev');\n var getKeyReq = index.getKey(doc._doc_id_rev);\n getKeyReq.onsuccess = function (e) {\n var putReq = bySeqStore.put(doc, e.target.result);\n putReq.onsuccess = afterPutDoc;\n };\n }\n\n function afterPutMetadata() {\n results[resultsIdx] = {\n ok: true,\n id: metadata.id,\n rev: metadata.rev\n };\n fetchedDocs.set(docInfo.metadata.id, docInfo.metadata);\n insertAttachmentMappings(docInfo, metadata.seq, callback);\n }\n\n var putReq = bySeqStore.put(doc);\n\n putReq.onsuccess = afterPutDoc;\n putReq.onerror = afterPutDocError;\n }\n\n function writeAttachments(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback) {\n\n\n var doc = docInfo.data;\n\n var numDone = 0;\n var attachments = Object.keys(doc._attachments);\n\n function collectResults() {\n if (numDone === attachments.length) {\n finishDoc(docInfo, winningRev$$1, winningRevIsDeleted,\n isUpdate, resultsIdx, callback);\n }\n }\n\n function attachmentSaved() {\n numDone++;\n collectResults();\n }\n\n attachments.forEach(function (key) {\n var att = docInfo.data._attachments[key];\n if (!att.stub) {\n var data = att.data;\n delete att.data;\n att.revpos = parseInt(winningRev$$1, 10);\n var digest = att.digest;\n saveAttachment(digest, data, attachmentSaved);\n } else {\n numDone++;\n collectResults();\n }\n });\n }\n\n // map seqs to attachment digests, which\n // we will need later during compaction\n function insertAttachmentMappings(docInfo, seq, callback) {\n\n var attsAdded = 0;\n var attsToAdd = Object.keys(docInfo.data._attachments || {});\n\n if (!attsToAdd.length) {\n return callback();\n }\n\n function checkDone() {\n if (++attsAdded === attsToAdd.length) {\n callback();\n }\n }\n\n function add(att) {\n var digest = docInfo.data._attachments[att].digest;\n var req = attachAndSeqStore.put({\n seq: seq,\n digestSeq: digest + '::' + seq\n });\n\n req.onsuccess = checkDone;\n req.onerror = function (e) {\n // this callback is for a constaint error, which we ignore\n // because this docid/rev has already been associated with\n // the digest (e.g. when new_edits == false)\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n checkDone();\n };\n }\n for (var i = 0; i < attsToAdd.length; i++) {\n add(attsToAdd[i]); // do in parallel\n }\n }\n\n function saveAttachment(digest, data, callback) {\n\n\n var getKeyReq = attachStore.count(digest);\n getKeyReq.onsuccess = function (e) {\n var count = e.target.result;\n if (count) {\n return callback(); // already exists\n }\n var newAtt = {\n digest: digest,\n body: data\n };\n var putReq = attachStore.put(newAtt);\n putReq.onsuccess = callback;\n };\n }\n}\n\n// Abstraction over IDBCursor and getAll()/getAllKeys() that allows us to batch our operations\n// while falling back to a normal IDBCursor operation on browsers that don't support getAll() or\n// getAllKeys(). This allows for a much faster implementation than just straight-up cursors, because\n// we're not processing each document one-at-a-time.\nfunction runBatchedCursor(objectStore, keyRange, descending, batchSize, onBatch) {\n\n if (batchSize === -1) {\n batchSize = 1000;\n }\n\n // Bail out of getAll()/getAllKeys() in the following cases:\n // 1) either method is unsupported - we need both\n // 2) batchSize is 1 (might as well use IDBCursor)\n // 3) descending – no real way to do this via getAll()/getAllKeys()\n\n var useGetAll = typeof objectStore.getAll === 'function' &&\n typeof objectStore.getAllKeys === 'function' &&\n batchSize > 1 && !descending;\n\n var keysBatch;\n var valuesBatch;\n var pseudoCursor;\n\n function onGetAll(e) {\n valuesBatch = e.target.result;\n if (keysBatch) {\n onBatch(keysBatch, valuesBatch, pseudoCursor);\n }\n }\n\n function onGetAllKeys(e) {\n keysBatch = e.target.result;\n if (valuesBatch) {\n onBatch(keysBatch, valuesBatch, pseudoCursor);\n }\n }\n\n function continuePseudoCursor() {\n if (!keysBatch.length) { // no more results\n return onBatch();\n }\n // fetch next batch, exclusive start\n var lastKey = keysBatch[keysBatch.length - 1];\n var newKeyRange;\n if (keyRange && keyRange.upper) {\n try {\n newKeyRange = IDBKeyRange.bound(lastKey, keyRange.upper,\n true, keyRange.upperOpen);\n } catch (e) {\n if (e.name === \"DataError\" && e.code === 0) {\n return onBatch(); // we're done, startkey and endkey are equal\n }\n }\n } else {\n newKeyRange = IDBKeyRange.lowerBound(lastKey, true);\n }\n keyRange = newKeyRange;\n keysBatch = null;\n valuesBatch = null;\n objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll;\n objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys;\n }\n\n function onCursor(e) {\n var cursor = e.target.result;\n if (!cursor) { // done\n return onBatch();\n }\n // regular IDBCursor acts like a batch where batch size is always 1\n onBatch([cursor.key], [cursor.value], cursor);\n }\n\n if (useGetAll) {\n pseudoCursor = {\"continue\": continuePseudoCursor};\n objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll;\n objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys;\n } else if (descending) {\n objectStore.openCursor(keyRange, 'prev').onsuccess = onCursor;\n } else {\n objectStore.openCursor(keyRange).onsuccess = onCursor;\n }\n}\n\n// simple shim for objectStore.getAll(), falling back to IDBCursor\nfunction getAll(objectStore, keyRange, onSuccess) {\n if (typeof objectStore.getAll === 'function') {\n // use native getAll\n objectStore.getAll(keyRange).onsuccess = onSuccess;\n return;\n }\n // fall back to cursors\n var values = [];\n\n function onCursor(e) {\n var cursor = e.target.result;\n if (cursor) {\n values.push(cursor.value);\n cursor.continue();\n } else {\n onSuccess({\n target: {\n result: values\n }\n });\n }\n }\n\n objectStore.openCursor(keyRange).onsuccess = onCursor;\n}\n\nfunction allDocsKeys(keys, docStore, onBatch) {\n // It's not guaranted to be returned in right order \n var valuesBatch = new Array(keys.length);\n var count = 0;\n keys.forEach(function (key, index) {\n docStore.get(key).onsuccess = function (event) {\n if (event.target.result) {\n valuesBatch[index] = event.target.result;\n } else {\n valuesBatch[index] = {key: key, error: 'not_found'};\n }\n count++;\n if (count === keys.length) {\n onBatch(keys, valuesBatch, {});\n }\n };\n });\n}\n\nfunction createKeyRange(start, end, inclusiveEnd, key, descending) {\n try {\n if (start && end) {\n if (descending) {\n return IDBKeyRange.bound(end, start, !inclusiveEnd, false);\n } else {\n return IDBKeyRange.bound(start, end, false, !inclusiveEnd);\n }\n } else if (start) {\n if (descending) {\n return IDBKeyRange.upperBound(start);\n } else {\n return IDBKeyRange.lowerBound(start);\n }\n } else if (end) {\n if (descending) {\n return IDBKeyRange.lowerBound(end, !inclusiveEnd);\n } else {\n return IDBKeyRange.upperBound(end, !inclusiveEnd);\n }\n } else if (key) {\n return IDBKeyRange.only(key);\n }\n } catch (e) {\n return {error: e};\n }\n return null;\n}\n\nfunction idbAllDocs(opts, idb, callback) {\n var start = 'startkey' in opts ? opts.startkey : false;\n var end = 'endkey' in opts ? opts.endkey : false;\n var key = 'key' in opts ? opts.key : false;\n var keys = 'keys' in opts ? opts.keys : false; \n var skip = opts.skip || 0;\n var limit = typeof opts.limit === 'number' ? opts.limit : -1;\n var inclusiveEnd = opts.inclusive_end !== false;\n\n var keyRange ; \n var keyRangeError;\n if (!keys) {\n keyRange = createKeyRange(start, end, inclusiveEnd, key, opts.descending);\n keyRangeError = keyRange && keyRange.error;\n if (keyRangeError && \n !(keyRangeError.name === \"DataError\" && keyRangeError.code === 0)) {\n // DataError with error code 0 indicates start is less than end, so\n // can just do an empty query. Else need to throw\n return callback(createError(IDB_ERROR,\n keyRangeError.name, keyRangeError.message));\n }\n }\n\n var stores = [DOC_STORE, BY_SEQ_STORE, META_STORE];\n\n if (opts.attachments) {\n stores.push(ATTACH_STORE);\n }\n var txnResult = openTransactionSafely(idb, stores, 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n txn.oncomplete = onTxnComplete;\n txn.onabort = idbError(callback);\n var docStore = txn.objectStore(DOC_STORE);\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var metaStore = txn.objectStore(META_STORE);\n var docIdRevIndex = seqStore.index('_doc_id_rev');\n var results = [];\n var docCount;\n var updateSeq;\n\n metaStore.get(META_STORE).onsuccess = function (e) {\n docCount = e.target.result.docCount;\n };\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n getMaxUpdateSeq(seqStore, function (e) { \n if (e.target.result && e.target.result.length > 0) {\n updateSeq = e.target.result[0];\n }\n });\n }\n\n function getMaxUpdateSeq(objectStore, onSuccess) {\n function onCursor(e) {\n var cursor = e.target.result;\n var maxKey = undefined;\n if (cursor && cursor.key) {\n maxKey = cursor.key;\n } \n return onSuccess({\n target: {\n result: [maxKey]\n }\n });\n }\n objectStore.openCursor(null, 'prev').onsuccess = onCursor;\n }\n\n // if the user specifies include_docs=true, then we don't\n // want to block the main cursor while we're fetching the doc\n function fetchDocAsynchronously(metadata, row, winningRev$$1) {\n var key = metadata.id + \"::\" + winningRev$$1;\n docIdRevIndex.get(key).onsuccess = function onGetDoc(e) {\n row.doc = decodeDoc(e.target.result) || {};\n if (opts.conflicts) {\n var conflicts = collectConflicts(metadata);\n if (conflicts.length) {\n row.doc._conflicts = conflicts;\n }\n }\n fetchAttachmentsIfNecessary(row.doc, opts, txn);\n };\n }\n\n function allDocsInner(winningRev$$1, metadata) {\n var row = {\n id: metadata.id,\n key: metadata.id,\n value: {\n rev: winningRev$$1\n }\n };\n var deleted = metadata.deleted;\n if (deleted) {\n if (keys) {\n results.push(row);\n // deleted docs are okay with \"keys\" requests\n row.value.deleted = true;\n row.doc = null;\n }\n } else if (skip-- <= 0) {\n results.push(row);\n if (opts.include_docs) {\n fetchDocAsynchronously(metadata, row, winningRev$$1);\n }\n }\n }\n\n function processBatch(batchValues) {\n for (var i = 0, len = batchValues.length; i < len; i++) {\n if (results.length === limit) {\n break;\n }\n var batchValue = batchValues[i];\n if (batchValue.error && keys) {\n // key was not found with \"keys\" requests\n results.push(batchValue);\n continue;\n }\n var metadata = decodeMetadata(batchValue);\n var winningRev$$1 = metadata.winningRev;\n allDocsInner(winningRev$$1, metadata);\n }\n }\n\n function onBatch(batchKeys, batchValues, cursor) {\n if (!cursor) {\n return;\n }\n processBatch(batchValues);\n if (results.length < limit) {\n cursor.continue();\n }\n }\n\n function onGetAll(e) {\n var values = e.target.result;\n if (opts.descending) {\n values = values.reverse();\n }\n processBatch(values);\n }\n\n function onResultsReady() {\n var returnVal = {\n total_rows: docCount,\n offset: opts.skip,\n rows: results\n };\n \n /* istanbul ignore if */\n if (opts.update_seq && updateSeq !== undefined) {\n returnVal.update_seq = updateSeq;\n }\n callback(null, returnVal);\n }\n\n function onTxnComplete() {\n if (opts.attachments) {\n postProcessAttachments(results, opts.binary).then(onResultsReady);\n } else {\n onResultsReady();\n }\n }\n\n // don't bother doing any requests if start > end or limit === 0\n if (keyRangeError || limit === 0) {\n return;\n }\n if (keys) {\n return allDocsKeys(opts.keys, docStore, onBatch);\n }\n if (limit === -1) { // just fetch everything\n return getAll(docStore, keyRange, onGetAll);\n }\n // else do a cursor\n // choose a batch size based on the skip, since we'll need to skip that many\n runBatchedCursor(docStore, keyRange, opts.descending, limit + skip, onBatch);\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\nfunction checkBlobSupport(txn) {\n return new Promise(function (resolve) {\n var blob$$1 = createBlob(['']);\n var req = txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob$$1, 'key');\n\n req.onsuccess = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome ||\n parseInt(matchedChrome[1], 10) >= 43);\n };\n\n req.onerror = txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n }).catch(function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction countDocs(txn, cb) {\n var index = txn.objectStore(DOC_STORE).index('deletedOrLocal');\n index.count(IDBKeyRange.only('0')).onsuccess = function (e) {\n cb(e.target.result);\n };\n}\n\n// This task queue ensures that IDB open calls are done in their own tick\n\nvar running = false;\nvar queue = [];\n\nfunction tryCode(fun, err, res, PouchDB) {\n try {\n fun(err, res);\n } catch (err) {\n // Shouldn't happen, but in some odd cases\n // IndexedDB implementations might throw a sync\n // error, in which case this will at least log it.\n PouchDB.emit('error', err);\n }\n}\n\nfunction applyNext() {\n if (running || !queue.length) {\n return;\n }\n running = true;\n queue.shift()();\n}\n\nfunction enqueueTask(action, callback, PouchDB) {\n queue.push(function runAction() {\n action(function runCallback(err, res) {\n tryCode(callback, err, res, PouchDB);\n running = false;\n immediate(function runNext() {\n applyNext(PouchDB);\n });\n });\n });\n applyNext();\n}\n\nfunction changes(opts, api, dbName, idb) {\n opts = clone(opts);\n\n if (opts.continuous) {\n var id = dbName + ':' + uuid();\n changesHandler.addListener(dbName, id, api, opts);\n changesHandler.notify(dbName);\n return {\n cancel: function () {\n changesHandler.removeListener(dbName, id);\n }\n };\n }\n\n var docIds = opts.doc_ids && new ExportedSet(opts.doc_ids);\n\n opts.since = opts.since || 0;\n var lastSeq = opts.since;\n\n var limit = 'limit' in opts ? opts.limit : -1;\n if (limit === 0) {\n limit = 1; // per CouchDB _changes spec\n }\n\n var results = [];\n var numResults = 0;\n var filter = filterChange(opts);\n var docIdsToMetadata = new ExportedMap();\n\n var txn;\n var bySeqStore;\n var docStore;\n var docIdRevIndex;\n\n function onBatch(batchKeys, batchValues, cursor) {\n if (!cursor || !batchKeys.length) { // done\n return;\n }\n\n var winningDocs = new Array(batchKeys.length);\n var metadatas = new Array(batchKeys.length);\n\n function processMetadataAndWinningDoc(metadata, winningDoc) {\n var change = opts.processChange(winningDoc, metadata, opts);\n lastSeq = change.seq = metadata.seq;\n\n var filtered = filter(change);\n if (typeof filtered === 'object') { // anything but true/false indicates error\n return Promise.reject(filtered);\n }\n\n if (!filtered) {\n return Promise.resolve();\n }\n numResults++;\n if (opts.return_docs) {\n results.push(change);\n }\n // process the attachment immediately\n // for the benefit of live listeners\n if (opts.attachments && opts.include_docs) {\n return new Promise(function (resolve) {\n fetchAttachmentsIfNecessary(winningDoc, opts, txn, function () {\n postProcessAttachments([change], opts.binary).then(function () {\n resolve(change);\n });\n });\n });\n } else {\n return Promise.resolve(change);\n }\n }\n\n function onBatchDone() {\n var promises = [];\n for (var i = 0, len = winningDocs.length; i < len; i++) {\n if (numResults === limit) {\n break;\n }\n var winningDoc = winningDocs[i];\n if (!winningDoc) {\n continue;\n }\n var metadata = metadatas[i];\n promises.push(processMetadataAndWinningDoc(metadata, winningDoc));\n }\n\n Promise.all(promises).then(function (changes) {\n for (var i = 0, len = changes.length; i < len; i++) {\n if (changes[i]) {\n opts.onChange(changes[i]);\n }\n }\n }).catch(opts.complete);\n\n if (numResults !== limit) {\n cursor.continue();\n }\n }\n\n // Fetch all metadatas/winningdocs from this batch in parallel, then process\n // them all only once all data has been collected. This is done in parallel\n // because it's faster than doing it one-at-a-time.\n var numDone = 0;\n batchValues.forEach(function (value, i) {\n var doc = decodeDoc(value);\n var seq = batchKeys[i];\n fetchWinningDocAndMetadata(doc, seq, function (metadata, winningDoc) {\n metadatas[i] = metadata;\n winningDocs[i] = winningDoc;\n if (++numDone === batchKeys.length) {\n onBatchDone();\n }\n });\n });\n }\n\n function onGetMetadata(doc, seq, metadata, cb) {\n if (metadata.seq !== seq) {\n // some other seq is later\n return cb();\n }\n\n if (metadata.winningRev === doc._rev) {\n // this is the winning doc\n return cb(metadata, doc);\n }\n\n // fetch winning doc in separate request\n var docIdRev = doc._id + '::' + metadata.winningRev;\n var req = docIdRevIndex.get(docIdRev);\n req.onsuccess = function (e) {\n cb(metadata, decodeDoc(e.target.result));\n };\n }\n\n function fetchWinningDocAndMetadata(doc, seq, cb) {\n if (docIds && !docIds.has(doc._id)) {\n return cb();\n }\n\n var metadata = docIdsToMetadata.get(doc._id);\n if (metadata) { // cached\n return onGetMetadata(doc, seq, metadata, cb);\n }\n // metadata not cached, have to go fetch it\n docStore.get(doc._id).onsuccess = function (e) {\n metadata = decodeMetadata(e.target.result);\n docIdsToMetadata.set(doc._id, metadata);\n onGetMetadata(doc, seq, metadata, cb);\n };\n }\n\n function finish() {\n opts.complete(null, {\n results: results,\n last_seq: lastSeq\n });\n }\n\n function onTxnComplete() {\n if (!opts.continuous && opts.attachments) {\n // cannot guarantee that postProcessing was already done,\n // so do it again\n postProcessAttachments(results).then(finish);\n } else {\n finish();\n }\n }\n\n var objectStores = [DOC_STORE, BY_SEQ_STORE];\n if (opts.attachments) {\n objectStores.push(ATTACH_STORE);\n }\n var txnResult = openTransactionSafely(idb, objectStores, 'readonly');\n if (txnResult.error) {\n return opts.complete(txnResult.error);\n }\n txn = txnResult.txn;\n txn.onabort = idbError(opts.complete);\n txn.oncomplete = onTxnComplete;\n\n bySeqStore = txn.objectStore(BY_SEQ_STORE);\n docStore = txn.objectStore(DOC_STORE);\n docIdRevIndex = bySeqStore.index('_doc_id_rev');\n\n var keyRange = (opts.since && !opts.descending) ?\n IDBKeyRange.lowerBound(opts.since, true) : null;\n\n runBatchedCursor(bySeqStore, keyRange, opts.descending, limit, onBatch);\n}\n\nvar cachedDBs = new ExportedMap();\nvar blobSupportPromise;\nvar openReqList = new ExportedMap();\n\nfunction IdbPouch(opts, callback) {\n var api = this;\n\n enqueueTask(function (thisCallback) {\n init(api, opts, thisCallback);\n }, callback, api.constructor);\n}\n\nfunction init(api, opts, callback) {\n\n var dbName = opts.name;\n\n var idb = null;\n api._meta = null;\n\n // called when creating a fresh new database\n function createSchema(db) {\n var docStore = db.createObjectStore(DOC_STORE, {keyPath : 'id'});\n db.createObjectStore(BY_SEQ_STORE, {autoIncrement: true})\n .createIndex('_doc_id_rev', '_doc_id_rev', {unique: true});\n db.createObjectStore(ATTACH_STORE, {keyPath: 'digest'});\n db.createObjectStore(META_STORE, {keyPath: 'id', autoIncrement: false});\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n\n // added in v2\n docStore.createIndex('deletedOrLocal', 'deletedOrLocal', {unique : false});\n\n // added in v3\n db.createObjectStore(LOCAL_STORE, {keyPath: '_id'});\n\n // added in v4\n var attAndSeqStore = db.createObjectStore(ATTACH_AND_SEQ_STORE,\n {autoIncrement: true});\n attAndSeqStore.createIndex('seq', 'seq');\n attAndSeqStore.createIndex('digestSeq', 'digestSeq', {unique: true});\n }\n\n // migration to version 2\n // unfortunately \"deletedOrLocal\" is a misnomer now that we no longer\n // store local docs in the main doc-store, but whaddyagonnado\n function addDeletedOrLocalIndex(txn, callback) {\n var docStore = txn.objectStore(DOC_STORE);\n docStore.createIndex('deletedOrLocal', 'deletedOrLocal', {unique : false});\n\n docStore.openCursor().onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var metadata = cursor.value;\n var deleted = isDeleted(metadata);\n metadata.deletedOrLocal = deleted ? \"1\" : \"0\";\n docStore.put(metadata);\n cursor.continue();\n } else {\n callback();\n }\n };\n }\n\n // migration to version 3 (part 1)\n function createLocalStoreSchema(db) {\n db.createObjectStore(LOCAL_STORE, {keyPath: '_id'})\n .createIndex('_doc_id_rev', '_doc_id_rev', {unique: true});\n }\n\n // migration to version 3 (part 2)\n function migrateLocalStore(txn, cb) {\n var localStore = txn.objectStore(LOCAL_STORE);\n var docStore = txn.objectStore(DOC_STORE);\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n\n var cursor = docStore.openCursor();\n cursor.onsuccess = function (event) {\n var cursor = event.target.result;\n if (cursor) {\n var metadata = cursor.value;\n var docId = metadata.id;\n var local = isLocalId(docId);\n var rev$$1 = winningRev(metadata);\n if (local) {\n var docIdRev = docId + \"::\" + rev$$1;\n // remove all seq entries\n // associated with this docId\n var start = docId + \"::\";\n var end = docId + \"::~\";\n var index = seqStore.index('_doc_id_rev');\n var range = IDBKeyRange.bound(start, end, false, false);\n var seqCursor = index.openCursor(range);\n seqCursor.onsuccess = function (e) {\n seqCursor = e.target.result;\n if (!seqCursor) {\n // done\n docStore.delete(cursor.primaryKey);\n cursor.continue();\n } else {\n var data = seqCursor.value;\n if (data._doc_id_rev === docIdRev) {\n localStore.put(data);\n }\n seqStore.delete(seqCursor.primaryKey);\n seqCursor.continue();\n }\n };\n } else {\n cursor.continue();\n }\n } else if (cb) {\n cb();\n }\n };\n }\n\n // migration to version 4 (part 1)\n function addAttachAndSeqStore(db) {\n var attAndSeqStore = db.createObjectStore(ATTACH_AND_SEQ_STORE,\n {autoIncrement: true});\n attAndSeqStore.createIndex('seq', 'seq');\n attAndSeqStore.createIndex('digestSeq', 'digestSeq', {unique: true});\n }\n\n // migration to version 4 (part 2)\n function migrateAttsAndSeqs(txn, callback) {\n var seqStore = txn.objectStore(BY_SEQ_STORE);\n var attStore = txn.objectStore(ATTACH_STORE);\n var attAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE);\n\n // need to actually populate the table. this is the expensive part,\n // so as an optimization, check first that this database even\n // contains attachments\n var req = attStore.count();\n req.onsuccess = function (e) {\n var count = e.target.result;\n if (!count) {\n return callback(); // done\n }\n\n seqStore.openCursor().onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n return callback(); // done\n }\n var doc = cursor.value;\n var seq = cursor.primaryKey;\n var atts = Object.keys(doc._attachments || {});\n var digestMap = {};\n for (var j = 0; j < atts.length; j++) {\n var att = doc._attachments[atts[j]];\n digestMap[att.digest] = true; // uniq digests, just in case\n }\n var digests = Object.keys(digestMap);\n for (j = 0; j < digests.length; j++) {\n var digest = digests[j];\n attAndSeqStore.put({\n seq: seq,\n digestSeq: digest + '::' + seq\n });\n }\n cursor.continue();\n };\n };\n }\n\n // migration to version 5\n // Instead of relying on on-the-fly migration of metadata,\n // this brings the doc-store to its modern form:\n // - metadata.winningrev\n // - metadata.seq\n // - stringify the metadata when storing it\n function migrateMetadata(txn) {\n\n function decodeMetadataCompat(storedObject) {\n if (!storedObject.data) {\n // old format, when we didn't store it stringified\n storedObject.deleted = storedObject.deletedOrLocal === '1';\n return storedObject;\n }\n return decodeMetadata(storedObject);\n }\n\n // ensure that every metadata has a winningRev and seq,\n // which was previously created on-the-fly but better to migrate\n var bySeqStore = txn.objectStore(BY_SEQ_STORE);\n var docStore = txn.objectStore(DOC_STORE);\n var cursor = docStore.openCursor();\n cursor.onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n return; // done\n }\n var metadata = decodeMetadataCompat(cursor.value);\n\n metadata.winningRev = metadata.winningRev ||\n winningRev(metadata);\n\n function fetchMetadataSeq() {\n // metadata.seq was added post-3.2.0, so if it's missing,\n // we need to fetch it manually\n var start = metadata.id + '::';\n var end = metadata.id + '::\\uffff';\n var req = bySeqStore.index('_doc_id_rev').openCursor(\n IDBKeyRange.bound(start, end));\n\n var metadataSeq = 0;\n req.onsuccess = function (e) {\n var cursor = e.target.result;\n if (!cursor) {\n metadata.seq = metadataSeq;\n return onGetMetadataSeq();\n }\n var seq = cursor.primaryKey;\n if (seq > metadataSeq) {\n metadataSeq = seq;\n }\n cursor.continue();\n };\n }\n\n function onGetMetadataSeq() {\n var metadataToStore = encodeMetadata(metadata,\n metadata.winningRev, metadata.deleted);\n\n var req = docStore.put(metadataToStore);\n req.onsuccess = function () {\n cursor.continue();\n };\n }\n\n if (metadata.seq) {\n return onGetMetadataSeq();\n }\n\n fetchMetadataSeq();\n };\n\n }\n\n api._remote = false;\n api.type = function () {\n return 'idb';\n };\n\n api._id = toPromise(function (callback) {\n callback(null, api._meta.instanceId);\n });\n\n api._bulkDocs = function idb_bulkDocs(req, reqOpts, callback) {\n idbBulkDocs(opts, req, reqOpts, api, idb, callback);\n };\n\n // First we look up the metadata in the ids database, then we fetch the\n // current revision(s) from the by sequence store\n api._get = function idb_get(id, opts, callback) {\n var doc;\n var metadata;\n var err;\n var txn = opts.ctx;\n if (!txn) {\n var txnResult = openTransactionSafely(idb,\n [DOC_STORE, BY_SEQ_STORE, ATTACH_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n }\n\n function finish() {\n callback(err, {doc: doc, metadata: metadata, ctx: txn});\n }\n\n txn.objectStore(DOC_STORE).get(id).onsuccess = function (e) {\n metadata = decodeMetadata(e.target.result);\n // we can determine the result here if:\n // 1. there is no such document\n // 2. the document is deleted and we don't ask about specific rev\n // When we ask with opts.rev we expect the answer to be either\n // doc (possibly with _deleted=true) or missing error\n if (!metadata) {\n err = createError(MISSING_DOC, 'missing');\n return finish();\n }\n\n var rev$$1;\n if (!opts.rev) {\n rev$$1 = metadata.winningRev;\n var deleted = isDeleted(metadata);\n if (deleted) {\n err = createError(MISSING_DOC, \"deleted\");\n return finish();\n }\n } else {\n rev$$1 = opts.latest ? latest(opts.rev, metadata) : opts.rev;\n }\n\n var objectStore = txn.objectStore(BY_SEQ_STORE);\n var key = metadata.id + '::' + rev$$1;\n\n objectStore.index('_doc_id_rev').get(key).onsuccess = function (e) {\n doc = e.target.result;\n if (doc) {\n doc = decodeDoc(doc);\n }\n if (!doc) {\n err = createError(MISSING_DOC, 'missing');\n return finish();\n }\n finish();\n };\n };\n };\n\n api._getAttachment = function (docId, attachId, attachment, opts, callback) {\n var txn;\n if (opts.ctx) {\n txn = opts.ctx;\n } else {\n var txnResult = openTransactionSafely(idb,\n [DOC_STORE, BY_SEQ_STORE, ATTACH_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n txn = txnResult.txn;\n }\n var digest = attachment.digest;\n var type = attachment.content_type;\n\n txn.objectStore(ATTACH_STORE).get(digest).onsuccess = function (e) {\n var body = e.target.result.body;\n readBlobData(body, type, opts.binary, function (blobData) {\n callback(null, blobData);\n });\n };\n };\n\n api._info = function idb_info(callback) {\n var updateSeq;\n var docCount;\n\n var txnResult = openTransactionSafely(idb, [META_STORE, BY_SEQ_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n txn.objectStore(META_STORE).get(META_STORE).onsuccess = function (e) {\n docCount = e.target.result.docCount;\n };\n txn.objectStore(BY_SEQ_STORE).openCursor(null, 'prev').onsuccess = function (e) {\n var cursor = e.target.result;\n updateSeq = cursor ? cursor.key : 0;\n };\n\n txn.oncomplete = function () {\n callback(null, {\n doc_count: docCount,\n update_seq: updateSeq,\n // for debugging\n idb_attachment_format: (api._meta.blobSupport ? 'binary' : 'base64')\n });\n };\n };\n\n api._allDocs = function idb_allDocs(opts, callback) {\n idbAllDocs(opts, idb, callback);\n };\n\n api._changes = function idbChanges(opts) {\n return changes(opts, api, dbName, idb);\n };\n\n api._close = function (callback) {\n // https://developer.mozilla.org/en-US/docs/IndexedDB/IDBDatabase#close\n // \"Returns immediately and closes the connection in a separate thread...\"\n idb.close();\n cachedDBs.delete(dbName);\n callback();\n };\n\n api._getRevisionTree = function (docId, callback) {\n var txnResult = openTransactionSafely(idb, [DOC_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n var req = txn.objectStore(DOC_STORE).get(docId);\n req.onsuccess = function (event) {\n var doc = decodeMetadata(event.target.result);\n if (!doc) {\n callback(createError(MISSING_DOC));\n } else {\n callback(null, doc.rev_tree);\n }\n };\n };\n\n // This function removes revisions of document docId\n // which are listed in revs and sets this document\n // revision to to rev_tree\n api._doCompaction = function (docId, revs, callback) {\n var stores = [\n DOC_STORE,\n BY_SEQ_STORE,\n ATTACH_STORE,\n ATTACH_AND_SEQ_STORE\n ];\n var txnResult = openTransactionSafely(idb, stores, 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var txn = txnResult.txn;\n\n var docStore = txn.objectStore(DOC_STORE);\n\n docStore.get(docId).onsuccess = function (event) {\n var metadata = decodeMetadata(event.target.result);\n traverseRevTree(metadata.rev_tree, function (isLeaf, pos,\n revHash, ctx, opts) {\n var rev$$1 = pos + '-' + revHash;\n if (revs.indexOf(rev$$1) !== -1) {\n opts.status = 'missing';\n }\n });\n compactRevs(revs, docId, txn);\n var winningRev$$1 = metadata.winningRev;\n var deleted = metadata.deleted;\n txn.objectStore(DOC_STORE).put(\n encodeMetadata(metadata, winningRev$$1, deleted));\n };\n txn.onabort = idbError(callback);\n txn.oncomplete = function () {\n callback();\n };\n };\n\n\n api._getLocal = function (id, callback) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readonly');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n var tx = txnResult.txn;\n var req = tx.objectStore(LOCAL_STORE).get(id);\n\n req.onerror = idbError(callback);\n req.onsuccess = function (e) {\n var doc = e.target.result;\n if (!doc) {\n callback(createError(MISSING_DOC));\n } else {\n delete doc['_doc_id_rev']; // for backwards compat\n callback(null, doc);\n }\n };\n };\n\n api._putLocal = function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n delete doc._revisions; // ignore this, trust the rev\n var oldRev = doc._rev;\n var id = doc._id;\n if (!oldRev) {\n doc._rev = '0-1';\n } else {\n doc._rev = '0-' + (parseInt(oldRev.split('-')[1], 10) + 1);\n }\n\n var tx = opts.ctx;\n var ret;\n if (!tx) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n tx = txnResult.txn;\n tx.onerror = idbError(callback);\n tx.oncomplete = function () {\n if (ret) {\n callback(null, ret);\n }\n };\n }\n\n var oStore = tx.objectStore(LOCAL_STORE);\n var req;\n if (oldRev) {\n req = oStore.get(id);\n req.onsuccess = function (e) {\n var oldDoc = e.target.result;\n if (!oldDoc || oldDoc._rev !== oldRev) {\n callback(createError(REV_CONFLICT));\n } else { // update\n var req = oStore.put(doc);\n req.onsuccess = function () {\n ret = {ok: true, id: doc._id, rev: doc._rev};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n };\n }\n };\n } else { // new doc\n req = oStore.add(doc);\n req.onerror = function (e) {\n // constraint error, already exists\n callback(createError(REV_CONFLICT));\n e.preventDefault(); // avoid transaction abort\n e.stopPropagation(); // avoid transaction onerror\n };\n req.onsuccess = function () {\n ret = {ok: true, id: doc._id, rev: doc._rev};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n };\n }\n };\n\n api._removeLocal = function (doc, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n var tx = opts.ctx;\n if (!tx) {\n var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readwrite');\n if (txnResult.error) {\n return callback(txnResult.error);\n }\n tx = txnResult.txn;\n tx.oncomplete = function () {\n if (ret) {\n callback(null, ret);\n }\n };\n }\n var ret;\n var id = doc._id;\n var oStore = tx.objectStore(LOCAL_STORE);\n var req = oStore.get(id);\n\n req.onerror = idbError(callback);\n req.onsuccess = function (e) {\n var oldDoc = e.target.result;\n if (!oldDoc || oldDoc._rev !== doc._rev) {\n callback(createError(MISSING_DOC));\n } else {\n oStore.delete(id);\n ret = {ok: true, id: id, rev: '0-0'};\n if (opts.ctx) { // return immediately\n callback(null, ret);\n }\n }\n };\n };\n\n api._destroy = function (opts, callback) {\n changesHandler.removeAllListeners(dbName);\n\n //Close open request for \"dbName\" database to fix ie delay.\n var openReq = openReqList.get(dbName);\n if (openReq && openReq.result) {\n openReq.result.close();\n cachedDBs.delete(dbName);\n }\n var req = indexedDB.deleteDatabase(dbName);\n\n req.onsuccess = function () {\n //Remove open request from the list.\n openReqList.delete(dbName);\n if (hasLocalStorage() && (dbName in localStorage)) {\n delete localStorage[dbName];\n }\n callback(null, { 'ok': true });\n };\n\n req.onerror = idbError(callback);\n };\n\n var cached = cachedDBs.get(dbName);\n\n if (cached) {\n idb = cached.idb;\n api._meta = cached.global;\n return immediate(function () {\n callback(null, api);\n });\n }\n\n var req = indexedDB.open(dbName, ADAPTER_VERSION);\n openReqList.set(dbName, req);\n\n req.onupgradeneeded = function (e) {\n var db = e.target.result;\n if (e.oldVersion < 1) {\n return createSchema(db); // new db, initial schema\n }\n // do migrations\n\n var txn = e.currentTarget.transaction;\n // these migrations have to be done in this function, before\n // control is returned to the event loop, because IndexedDB\n\n if (e.oldVersion < 3) {\n createLocalStoreSchema(db); // v2 -> v3\n }\n if (e.oldVersion < 4) {\n addAttachAndSeqStore(db); // v3 -> v4\n }\n\n var migrations = [\n addDeletedOrLocalIndex, // v1 -> v2\n migrateLocalStore, // v2 -> v3\n migrateAttsAndSeqs, // v3 -> v4\n migrateMetadata // v4 -> v5\n ];\n\n var i = e.oldVersion;\n\n function next() {\n var migration = migrations[i - 1];\n i++;\n if (migration) {\n migration(txn, next);\n }\n }\n\n next();\n };\n\n req.onsuccess = function (e) {\n\n idb = e.target.result;\n\n idb.onversionchange = function () {\n idb.close();\n cachedDBs.delete(dbName);\n };\n\n idb.onabort = function (e) {\n guardedConsole('error', 'Database has a global failure', e.target.error);\n idb.close();\n cachedDBs.delete(dbName);\n };\n\n // Do a few setup operations (in parallel as much as possible):\n // 1. Fetch meta doc\n // 2. Check blob support\n // 3. Calculate docCount\n // 4. Generate an instanceId if necessary\n // 5. Store docCount and instanceId on meta doc\n\n var txn = idb.transaction([\n META_STORE,\n DETECT_BLOB_SUPPORT_STORE,\n DOC_STORE\n ], 'readwrite');\n\n var storedMetaDoc = false;\n var metaDoc;\n var docCount;\n var blobSupport;\n var instanceId;\n\n function completeSetup() {\n if (typeof blobSupport === 'undefined' || !storedMetaDoc) {\n return;\n }\n api._meta = {\n name: dbName,\n instanceId: instanceId,\n blobSupport: blobSupport\n };\n\n cachedDBs.set(dbName, {\n idb: idb,\n global: api._meta\n });\n callback(null, api);\n }\n\n function storeMetaDocIfReady() {\n if (typeof docCount === 'undefined' || typeof metaDoc === 'undefined') {\n return;\n }\n var instanceKey = dbName + '_id';\n if (instanceKey in metaDoc) {\n instanceId = metaDoc[instanceKey];\n } else {\n metaDoc[instanceKey] = instanceId = uuid();\n }\n metaDoc.docCount = docCount;\n txn.objectStore(META_STORE).put(metaDoc);\n }\n\n //\n // fetch or generate the instanceId\n //\n txn.objectStore(META_STORE).get(META_STORE).onsuccess = function (e) {\n metaDoc = e.target.result || { id: META_STORE };\n storeMetaDocIfReady();\n };\n\n //\n // countDocs\n //\n countDocs(txn, function (count) {\n docCount = count;\n storeMetaDocIfReady();\n });\n\n //\n // check blob support\n //\n if (!blobSupportPromise) {\n // make sure blob support is only checked once\n blobSupportPromise = checkBlobSupport(txn);\n }\n\n blobSupportPromise.then(function (val) {\n blobSupport = val;\n completeSetup();\n });\n\n // only when the metadata put transaction has completed,\n // consider the setup done\n txn.oncomplete = function () {\n storedMetaDoc = true;\n completeSetup();\n };\n txn.onabort = idbError(callback);\n };\n\n req.onerror = function (e) {\n var msg = e.target.error && e.target.error.message;\n\n if (!msg) {\n msg = 'Failed to open indexedDB, are you in private browsing mode?';\n } else if (msg.indexOf(\"stored database is a higher version\") !== -1) {\n msg = new Error('This DB was created with the newer \"indexeddb\" adapter, but you are trying to open it with the older \"idb\" adapter');\n }\n\n guardedConsole('error', msg);\n callback(createError(IDB_ERROR, msg));\n };\n}\n\nIdbPouch.valid = function () {\n // Following #7085 buggy idb versions (typically Safari < 10.1) are\n // considered valid.\n\n // On Firefox SecurityError is thrown while referencing indexedDB if cookies\n // are not allowed. `typeof indexedDB` also triggers the error.\n try {\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n return typeof indexedDB !== 'undefined' && typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n};\n\nfunction IDBPouch (PouchDB) {\n PouchDB.adapter('idb', IdbPouch, true);\n}\n\n// dead simple promise pool, inspired by https://github.com/timdp/es6-promise-pool\n// but much smaller in code size. limits the number of concurrent promises that are executed\n\n\nfunction pool(promiseFactories, limit) {\n return new Promise(function (resolve, reject) {\n var running = 0;\n var current = 0;\n var done = 0;\n var len = promiseFactories.length;\n var err;\n\n function runNext() {\n running++;\n promiseFactories[current++]().then(onSuccess, onError);\n }\n\n function doNext() {\n if (++done === len) {\n /* istanbul ignore if */\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n } else {\n runNextBatch();\n }\n }\n\n function onSuccess() {\n running--;\n doNext();\n }\n\n /* istanbul ignore next */\n function onError(thisErr) {\n running--;\n err = err || thisErr;\n doNext();\n }\n\n function runNextBatch() {\n while (running < limit && current < len) {\n runNext();\n }\n }\n\n runNextBatch();\n });\n}\n\nvar CHANGES_BATCH_SIZE = 25;\nvar MAX_SIMULTANEOUS_REVS = 50;\nvar CHANGES_TIMEOUT_BUFFER = 5000;\nvar DEFAULT_HEARTBEAT = 10000;\n\nvar supportsBulkGetMap = {};\n\nfunction readAttachmentsAsBlobOrBuffer(row) {\n var doc = row.doc || row.ok;\n var atts = doc && doc._attachments;\n if (!atts) {\n return;\n }\n Object.keys(atts).forEach(function (filename) {\n var att = atts[filename];\n att.data = b64ToBluffer(att.data, att.content_type);\n });\n}\n\nfunction encodeDocId(id) {\n if (/^_design/.test(id)) {\n return '_design/' + encodeURIComponent(id.slice(8));\n }\n if (/^_local/.test(id)) {\n return '_local/' + encodeURIComponent(id.slice(7));\n }\n return encodeURIComponent(id);\n}\n\nfunction preprocessAttachments$1(doc) {\n if (!doc._attachments || !Object.keys(doc._attachments)) {\n return Promise.resolve();\n }\n\n return Promise.all(Object.keys(doc._attachments).map(function (key) {\n var attachment = doc._attachments[key];\n if (attachment.data && typeof attachment.data !== 'string') {\n return new Promise(function (resolve) {\n blobToBase64(attachment.data, resolve);\n }).then(function (b64) {\n attachment.data = b64;\n });\n }\n }));\n}\n\nfunction hasUrlPrefix(opts) {\n if (!opts.prefix) {\n return false;\n }\n var protocol = parseUri(opts.prefix).protocol;\n return protocol === 'http' || protocol === 'https';\n}\n\n// Get all the information you possibly can about the URI given by name and\n// return it as a suitable object.\nfunction getHost(name, opts) {\n // encode db name if opts.prefix is a url (#5574)\n if (hasUrlPrefix(opts)) {\n var dbName = opts.name.substr(opts.prefix.length);\n // Ensure prefix has a trailing slash\n var prefix = opts.prefix.replace(/\\/?$/, '/');\n name = prefix + encodeURIComponent(dbName);\n }\n\n var uri = parseUri(name);\n if (uri.user || uri.password) {\n uri.auth = {username: uri.user, password: uri.password};\n }\n\n // Split the path part of the URI into parts using '/' as the delimiter\n // after removing any leading '/' and any trailing '/'\n var parts = uri.path.replace(/(^\\/|\\/$)/g, '').split('/');\n\n uri.db = parts.pop();\n // Prevent double encoding of URI component\n if (uri.db.indexOf('%') === -1) {\n uri.db = encodeURIComponent(uri.db);\n }\n\n uri.path = parts.join('/');\n\n return uri;\n}\n\n// Generate a URL with the host data given by opts and the given path\nfunction genDBUrl(opts, path) {\n return genUrl(opts, opts.db + '/' + path);\n}\n\n// Generate a URL with the host data given by opts and the given path\nfunction genUrl(opts, path) {\n // If the host already has a path, then we need to have a path delimiter\n // Otherwise, the path delimiter is the empty string\n var pathDel = !opts.path ? '' : '/';\n\n // If the host already has a path, then we need to have a path delimiter\n // Otherwise, the path delimiter is the empty string\n return opts.protocol + '://' + opts.host +\n (opts.port ? (':' + opts.port) : '') +\n '/' + opts.path + pathDel + path;\n}\n\nfunction paramsToStr(params) {\n return '?' + Object.keys(params).map(function (k) {\n return k + '=' + encodeURIComponent(params[k]);\n }).join('&');\n}\n\nfunction shouldCacheBust(opts) {\n var ua = (typeof navigator !== 'undefined' && navigator.userAgent) ?\n navigator.userAgent.toLowerCase() : '';\n var isIE = ua.indexOf('msie') !== -1;\n var isTrident = ua.indexOf('trident') !== -1;\n var isEdge = ua.indexOf('edge') !== -1;\n var isGET = !('method' in opts) || opts.method === 'GET';\n return (isIE || isTrident || isEdge) && isGET;\n}\n\n// Implements the PouchDB API for dealing with CouchDB instances over HTTP\nfunction HttpPouch(opts, callback) {\n\n // The functions that will be publicly available for HttpPouch\n var api = this;\n\n var host = getHost(opts.name, opts);\n var dbUrl = genDBUrl(host, '');\n\n opts = clone(opts);\n\n var ourFetch = function (url, options) {\n\n options = options || {};\n options.headers = options.headers || new h();\n\n options.credentials = 'include';\n\n if (opts.auth || host.auth) {\n var nAuth = opts.auth || host.auth;\n var str = nAuth.username + ':' + nAuth.password;\n var token = thisBtoa(unescape(encodeURIComponent(str)));\n options.headers.set('Authorization', 'Basic ' + token);\n }\n\n var headers = opts.headers || {};\n Object.keys(headers).forEach(function (key) {\n options.headers.append(key, headers[key]);\n });\n\n /* istanbul ignore if */\n if (shouldCacheBust(options)) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + '_nonce=' + Date.now();\n }\n\n var fetchFun = opts.fetch || f$1;\n return fetchFun(url, options);\n };\n\n function adapterFun$$1(name, fun) {\n return adapterFun(name, getArguments(function (args) {\n setup().then(function () {\n return fun.apply(this, args);\n }).catch(function (e) {\n var callback = args.pop();\n callback(e);\n });\n })).bind(api);\n }\n\n function fetchJSON(url, options, callback) {\n\n var result = {};\n\n options = options || {};\n options.headers = options.headers || new h();\n\n if (!options.headers.get('Content-Type')) {\n options.headers.set('Content-Type', 'application/json');\n }\n if (!options.headers.get('Accept')) {\n options.headers.set('Accept', 'application/json');\n }\n\n return ourFetch(url, options).then(function (response) {\n result.ok = response.ok;\n result.status = response.status;\n return response.json();\n }).then(function (json) {\n result.data = json;\n if (!result.ok) {\n result.data.status = result.status;\n var err = generateErrorFromResponse(result.data);\n if (callback) {\n return callback(err);\n } else {\n throw err;\n }\n }\n\n if (Array.isArray(result.data)) {\n result.data = result.data.map(function (v) {\n if (v.error || v.missing) {\n return generateErrorFromResponse(v);\n } else {\n return v;\n }\n });\n }\n\n if (callback) {\n callback(null, result.data);\n } else {\n return result;\n }\n });\n }\n\n var setupPromise;\n\n function setup() {\n if (opts.skip_setup) {\n return Promise.resolve();\n }\n\n // If there is a setup in process or previous successful setup\n // done then we will use that\n // If previous setups have been rejected we will try again\n if (setupPromise) {\n return setupPromise;\n }\n\n setupPromise = fetchJSON(dbUrl).catch(function (err) {\n if (err && err.status && err.status === 404) {\n // Doesnt exist, create it\n explainError(404, 'PouchDB is just detecting if the remote exists.');\n return fetchJSON(dbUrl, {method: 'PUT'});\n } else {\n return Promise.reject(err);\n }\n }).catch(function (err) {\n // If we try to create a database that already exists, skipped in\n // istanbul since its catching a race condition.\n /* istanbul ignore if */\n if (err && err.status && err.status === 412) {\n return true;\n }\n return Promise.reject(err);\n });\n\n setupPromise.catch(function () {\n setupPromise = null;\n });\n\n return setupPromise;\n }\n\n immediate(function () {\n callback(null, api);\n });\n\n api._remote = true;\n\n /* istanbul ignore next */\n api.type = function () {\n return 'http';\n };\n\n api.id = adapterFun$$1('id', function (callback) {\n ourFetch(genUrl(host, '')).then(function (response) {\n return response.json();\n }).catch(function () {\n return {};\n }).then(function (result) {\n // Bad response or missing `uuid` should not prevent ID generation.\n var uuid$$1 = (result && result.uuid) ?\n (result.uuid + host.db) : genDBUrl(host, '');\n callback(null, uuid$$1);\n });\n });\n\n // Sends a POST request to the host calling the couchdb _compact function\n // version: The version of CouchDB it is running\n api.compact = adapterFun$$1('compact', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n fetchJSON(genDBUrl(host, '_compact'), {method: 'POST'}).then(function () {\n function ping() {\n api.info(function (err, res) {\n // CouchDB may send a \"compact_running:true\" if it's\n // already compacting. PouchDB Server doesn't.\n /* istanbul ignore else */\n if (res && !res.compact_running) {\n callback(null, {ok: true});\n } else {\n setTimeout(ping, opts.interval || 200);\n }\n });\n }\n // Ping the http if it's finished compaction\n ping();\n });\n });\n\n api.bulkGet = adapterFun('bulkGet', function (opts, callback) {\n var self = this;\n\n function doBulkGet(cb) {\n var params = {};\n if (opts.revs) {\n params.revs = true;\n }\n if (opts.attachments) {\n /* istanbul ignore next */\n params.attachments = true;\n }\n if (opts.latest) {\n params.latest = true;\n }\n fetchJSON(genDBUrl(host, '_bulk_get' + paramsToStr(params)), {\n method: 'POST',\n body: JSON.stringify({ docs: opts.docs})\n }).then(function (result) {\n if (opts.attachments && opts.binary) {\n result.data.results.forEach(function (res) {\n res.docs.forEach(readAttachmentsAsBlobOrBuffer);\n });\n }\n cb(null, result.data);\n }).catch(cb);\n }\n\n /* istanbul ignore next */\n function doBulkGetShim() {\n // avoid \"url too long error\" by splitting up into multiple requests\n var batchSize = MAX_SIMULTANEOUS_REVS;\n var numBatches = Math.ceil(opts.docs.length / batchSize);\n var numDone = 0;\n var results = new Array(numBatches);\n\n function onResult(batchNum) {\n return function (err, res) {\n // err is impossible because shim returns a list of errs in that case\n results[batchNum] = res.results;\n if (++numDone === numBatches) {\n callback(null, {results: flatten(results)});\n }\n };\n }\n\n for (var i = 0; i < numBatches; i++) {\n var subOpts = pick(opts, ['revs', 'attachments', 'binary', 'latest']);\n subOpts.docs = opts.docs.slice(i * batchSize,\n Math.min(opts.docs.length, (i + 1) * batchSize));\n bulkGet(self, subOpts, onResult(i));\n }\n }\n\n // mark the whole database as either supporting or not supporting _bulk_get\n var dbUrl = genUrl(host, '');\n var supportsBulkGet = supportsBulkGetMap[dbUrl];\n\n /* istanbul ignore next */\n if (typeof supportsBulkGet !== 'boolean') {\n // check if this database supports _bulk_get\n doBulkGet(function (err, res) {\n if (err) {\n supportsBulkGetMap[dbUrl] = false;\n explainError(\n err.status,\n 'PouchDB is just detecting if the remote ' +\n 'supports the _bulk_get API.'\n );\n doBulkGetShim();\n } else {\n supportsBulkGetMap[dbUrl] = true;\n callback(null, res);\n }\n });\n } else if (supportsBulkGet) {\n doBulkGet(callback);\n } else {\n doBulkGetShim();\n }\n });\n\n // Calls GET on the host, which gets back a JSON string containing\n // couchdb: A welcome string\n // version: The version of CouchDB it is running\n api._info = function (callback) {\n setup().then(function () {\n return ourFetch(genDBUrl(host, ''));\n }).then(function (response) {\n return response.json();\n }).then(function (info) {\n info.host = genDBUrl(host, '');\n callback(null, info);\n }).catch(callback);\n };\n\n api.fetch = function (path, options) {\n return setup().then(function () {\n var url = path.substring(0, 1) === '/' ?\n genUrl(host, path.substring(1)) :\n genDBUrl(host, path);\n return ourFetch(url, options);\n });\n };\n\n // Get the document with the given id from the database given by host.\n // The id could be solely the _id in the database, or it may be a\n // _design/ID or _local/ID path\n api.get = adapterFun$$1('get', function (id, opts, callback) {\n // If no options were given, set the callback to the second parameter\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n // List of parameters to add to the GET request\n var params = {};\n\n if (opts.revs) {\n params.revs = true;\n }\n\n if (opts.revs_info) {\n params.revs_info = true;\n }\n\n if (opts.latest) {\n params.latest = true;\n }\n\n if (opts.open_revs) {\n if (opts.open_revs !== \"all\") {\n opts.open_revs = JSON.stringify(opts.open_revs);\n }\n params.open_revs = opts.open_revs;\n }\n\n if (opts.rev) {\n params.rev = opts.rev;\n }\n\n if (opts.conflicts) {\n params.conflicts = opts.conflicts;\n }\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = opts.update_seq;\n }\n\n id = encodeDocId(id);\n\n function fetchAttachments(doc) {\n var atts = doc._attachments;\n var filenames = atts && Object.keys(atts);\n if (!atts || !filenames.length) {\n return;\n }\n // we fetch these manually in separate XHRs, because\n // Sync Gateway would normally send it back as multipart/mixed,\n // which we cannot parse. Also, this is more efficient than\n // receiving attachments as base64-encoded strings.\n function fetchData(filename) {\n var att = atts[filename];\n var path = encodeDocId(doc._id) + '/' + encodeAttachmentId(filename) +\n '?rev=' + doc._rev;\n return ourFetch(genDBUrl(host, path)).then(function (response) {\n if ('buffer' in response) {\n return response.buffer();\n } else {\n /* istanbul ignore next */\n return response.blob();\n }\n }).then(function (blob) {\n if (opts.binary) {\n var typeFieldDescriptor = Object.getOwnPropertyDescriptor(blob.__proto__, 'type');\n if (!typeFieldDescriptor || typeFieldDescriptor.set) {\n blob.type = att.content_type;\n }\n return blob;\n }\n return new Promise(function (resolve) {\n blobToBase64(blob, resolve);\n });\n }).then(function (data) {\n delete att.stub;\n delete att.length;\n att.data = data;\n });\n }\n\n var promiseFactories = filenames.map(function (filename) {\n return function () {\n return fetchData(filename);\n };\n });\n\n // This limits the number of parallel xhr requests to 5 any time\n // to avoid issues with maximum browser request limits\n return pool(promiseFactories, 5);\n }\n\n function fetchAllAttachments(docOrDocs) {\n if (Array.isArray(docOrDocs)) {\n return Promise.all(docOrDocs.map(function (doc) {\n if (doc.ok) {\n return fetchAttachments(doc.ok);\n }\n }));\n }\n return fetchAttachments(docOrDocs);\n }\n\n var url = genDBUrl(host, id + paramsToStr(params));\n fetchJSON(url).then(function (res) {\n return Promise.resolve().then(function () {\n if (opts.attachments) {\n return fetchAllAttachments(res.data);\n }\n }).then(function () {\n callback(null, res.data);\n });\n }).catch(function (e) {\n e.docId = id;\n callback(e);\n });\n });\n\n\n // Delete the document given by doc from the database given by host.\n api.remove = adapterFun$$1('remove', function (docOrId, optsOrRev, opts, cb) {\n var doc;\n if (typeof optsOrRev === 'string') {\n // id, rev, opts, callback style\n doc = {\n _id: docOrId,\n _rev: optsOrRev\n };\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n } else {\n // doc, opts, callback style\n doc = docOrId;\n if (typeof optsOrRev === 'function') {\n cb = optsOrRev;\n opts = {};\n } else {\n cb = opts;\n opts = optsOrRev;\n }\n }\n\n var rev$$1 = (doc._rev || opts.rev);\n var url = genDBUrl(host, encodeDocId(doc._id)) + '?rev=' + rev$$1;\n\n fetchJSON(url, {method: 'DELETE'}, cb).catch(cb);\n });\n\n function encodeAttachmentId(attachmentId) {\n return attachmentId.split(\"/\").map(encodeURIComponent).join(\"/\");\n }\n\n // Get the attachment\n api.getAttachment = adapterFun$$1('getAttachment', function (docId, attachmentId,\n opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n var params = opts.rev ? ('?rev=' + opts.rev) : '';\n var url = genDBUrl(host, encodeDocId(docId)) + '/' +\n encodeAttachmentId(attachmentId) + params;\n var contentType;\n ourFetch(url, {method: 'GET'}).then(function (response) {\n contentType = response.headers.get('content-type');\n if (!response.ok) {\n throw response;\n } else {\n if (typeof process !== 'undefined' && !process.browser && typeof response.buffer === 'function') {\n return response.buffer();\n } else {\n /* istanbul ignore next */\n return response.blob();\n }\n }\n }).then(function (blob) {\n // TODO: also remove\n if (typeof process !== 'undefined' && !process.browser) {\n blob.type = contentType;\n }\n callback(null, blob);\n }).catch(function (err) {\n callback(err);\n });\n });\n\n // Remove the attachment given by the id and rev\n api.removeAttachment = adapterFun$$1('removeAttachment', function (docId,\n attachmentId,\n rev$$1,\n callback) {\n var url = genDBUrl(host, encodeDocId(docId) + '/' +\n encodeAttachmentId(attachmentId)) + '?rev=' + rev$$1;\n fetchJSON(url, {method: 'DELETE'}, callback).catch(callback);\n });\n\n // Add the attachment given by blob and its contentType property\n // to the document with the given id, the revision given by rev, and\n // add it to the database given by host.\n api.putAttachment = adapterFun$$1('putAttachment', function (docId, attachmentId,\n rev$$1, blob,\n type, callback) {\n if (typeof type === 'function') {\n callback = type;\n type = blob;\n blob = rev$$1;\n rev$$1 = null;\n }\n var id = encodeDocId(docId) + '/' + encodeAttachmentId(attachmentId);\n var url = genDBUrl(host, id);\n if (rev$$1) {\n url += '?rev=' + rev$$1;\n }\n\n if (typeof blob === 'string') {\n // input is assumed to be a base64 string\n var binary;\n try {\n binary = thisAtob(blob);\n } catch (err) {\n return callback(createError(BAD_ARG,\n 'Attachment is not a valid base64 string'));\n }\n blob = binary ? binStringToBluffer(binary, type) : '';\n }\n\n // Add the attachment\n fetchJSON(url, {\n headers: new h({'Content-Type': type}),\n method: 'PUT',\n body: blob\n }, callback).catch(callback);\n });\n\n // Update/create multiple documents given by req in the database\n // given by host.\n api._bulkDocs = function (req, opts, callback) {\n // If new_edits=false then it prevents the database from creating\n // new revision numbers for the documents. Instead it just uses\n // the old ones. This is used in database replication.\n req.new_edits = opts.new_edits;\n\n setup().then(function () {\n return Promise.all(req.docs.map(preprocessAttachments$1));\n }).then(function () {\n // Update/create the documents\n return fetchJSON(genDBUrl(host, '_bulk_docs'), {\n method: 'POST',\n body: JSON.stringify(req)\n }, callback);\n }).catch(callback);\n };\n\n\n // Update/create document\n api._put = function (doc, opts, callback) {\n setup().then(function () {\n return preprocessAttachments$1(doc);\n }).then(function () {\n return fetchJSON(genDBUrl(host, encodeDocId(doc._id)), {\n method: 'PUT',\n body: JSON.stringify(doc)\n });\n }).then(function (result) {\n callback(null, result.data);\n }).catch(function (err) {\n err.docId = doc && doc._id;\n callback(err);\n });\n };\n\n\n // Get a listing of the documents in the database given\n // by host and ordered by increasing id.\n api.allDocs = adapterFun$$1('allDocs', function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = clone(opts);\n\n // List of parameters to add to the GET request\n var params = {};\n var body;\n var method = 'GET';\n\n if (opts.conflicts) {\n params.conflicts = true;\n }\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = true;\n }\n\n if (opts.descending) {\n params.descending = true;\n }\n\n if (opts.include_docs) {\n params.include_docs = true;\n }\n\n // added in CouchDB 1.6.0\n if (opts.attachments) {\n params.attachments = true;\n }\n\n if (opts.key) {\n params.key = JSON.stringify(opts.key);\n }\n\n if (opts.start_key) {\n opts.startkey = opts.start_key;\n }\n\n if (opts.startkey) {\n params.startkey = JSON.stringify(opts.startkey);\n }\n\n if (opts.end_key) {\n opts.endkey = opts.end_key;\n }\n\n if (opts.endkey) {\n params.endkey = JSON.stringify(opts.endkey);\n }\n\n if (typeof opts.inclusive_end !== 'undefined') {\n params.inclusive_end = !!opts.inclusive_end;\n }\n\n if (typeof opts.limit !== 'undefined') {\n params.limit = opts.limit;\n }\n\n if (typeof opts.skip !== 'undefined') {\n params.skip = opts.skip;\n }\n\n var paramStr = paramsToStr(params);\n\n if (typeof opts.keys !== 'undefined') {\n method = 'POST';\n body = {keys: opts.keys};\n }\n\n fetchJSON(genDBUrl(host, '_all_docs' + paramStr), {\n method: method,\n body: JSON.stringify(body)\n }).then(function (result) {\n if (opts.include_docs && opts.attachments && opts.binary) {\n result.data.rows.forEach(readAttachmentsAsBlobOrBuffer);\n }\n callback(null, result.data);\n }).catch(callback);\n });\n\n // Get a list of changes made to documents in the database given by host.\n // TODO According to the README, there should be two other methods here,\n // api.changes.addListener and api.changes.removeListener.\n api._changes = function (opts) {\n\n // We internally page the results of a changes request, this means\n // if there is a large set of changes to be returned we can start\n // processing them quicker instead of waiting on the entire\n // set of changes to return and attempting to process them at once\n var batchSize = 'batch_size' in opts ? opts.batch_size : CHANGES_BATCH_SIZE;\n\n opts = clone(opts);\n\n if (opts.continuous && !('heartbeat' in opts)) {\n opts.heartbeat = DEFAULT_HEARTBEAT;\n }\n\n var requestTimeout = ('timeout' in opts) ? opts.timeout : 30 * 1000;\n\n // ensure CHANGES_TIMEOUT_BUFFER applies\n if ('timeout' in opts && opts.timeout &&\n (requestTimeout - opts.timeout) < CHANGES_TIMEOUT_BUFFER) {\n requestTimeout = opts.timeout + CHANGES_TIMEOUT_BUFFER;\n }\n\n /* istanbul ignore if */\n if ('heartbeat' in opts && opts.heartbeat &&\n (requestTimeout - opts.heartbeat) < CHANGES_TIMEOUT_BUFFER) {\n requestTimeout = opts.heartbeat + CHANGES_TIMEOUT_BUFFER;\n }\n\n var params = {};\n if ('timeout' in opts && opts.timeout) {\n params.timeout = opts.timeout;\n }\n\n var limit = (typeof opts.limit !== 'undefined') ? opts.limit : false;\n var leftToFetch = limit;\n\n if (opts.style) {\n params.style = opts.style;\n }\n\n if (opts.include_docs || opts.filter && typeof opts.filter === 'function') {\n params.include_docs = true;\n }\n\n if (opts.attachments) {\n params.attachments = true;\n }\n\n if (opts.continuous) {\n params.feed = 'longpoll';\n }\n\n if (opts.seq_interval) {\n params.seq_interval = opts.seq_interval;\n }\n\n if (opts.conflicts) {\n params.conflicts = true;\n }\n\n if (opts.descending) {\n params.descending = true;\n }\n\n /* istanbul ignore if */\n if (opts.update_seq) {\n params.update_seq = true;\n }\n\n if ('heartbeat' in opts) {\n // If the heartbeat value is false, it disables the default heartbeat\n if (opts.heartbeat) {\n params.heartbeat = opts.heartbeat;\n }\n }\n\n if (opts.filter && typeof opts.filter === 'string') {\n params.filter = opts.filter;\n }\n\n if (opts.view && typeof opts.view === 'string') {\n params.filter = '_view';\n params.view = opts.view;\n }\n\n // If opts.query_params exists, pass it through to the changes request.\n // These parameters may be used by the filter on the source database.\n if (opts.query_params && typeof opts.query_params === 'object') {\n for (var param_name in opts.query_params) {\n /* istanbul ignore else */\n if (opts.query_params.hasOwnProperty(param_name)) {\n params[param_name] = opts.query_params[param_name];\n }\n }\n }\n\n var method = 'GET';\n var body;\n\n if (opts.doc_ids) {\n // set this automagically for the user; it's annoying that couchdb\n // requires both a \"filter\" and a \"doc_ids\" param.\n params.filter = '_doc_ids';\n method = 'POST';\n body = {doc_ids: opts.doc_ids };\n }\n /* istanbul ignore next */\n else if (opts.selector) {\n // set this automagically for the user, similar to above\n params.filter = '_selector';\n method = 'POST';\n body = {selector: opts.selector };\n }\n\n var controller = new a();\n var lastFetchedSeq;\n\n // Get all the changes starting wtih the one immediately after the\n // sequence number given by since.\n var fetchData = function (since, callback) {\n if (opts.aborted) {\n return;\n }\n params.since = since;\n // \"since\" can be any kind of json object in Cloudant/CouchDB 2.x\n /* istanbul ignore next */\n if (typeof params.since === \"object\") {\n params.since = JSON.stringify(params.since);\n }\n\n if (opts.descending) {\n if (limit) {\n params.limit = leftToFetch;\n }\n } else {\n params.limit = (!limit || leftToFetch > batchSize) ?\n batchSize : leftToFetch;\n }\n\n // Set the options for the ajax call\n var url = genDBUrl(host, '_changes' + paramsToStr(params));\n var fetchOpts = {\n signal: controller.signal,\n method: method,\n body: JSON.stringify(body)\n };\n lastFetchedSeq = since;\n\n /* istanbul ignore if */\n if (opts.aborted) {\n return;\n }\n\n // Get the changes\n setup().then(function () {\n return fetchJSON(url, fetchOpts, callback);\n }).catch(callback);\n };\n\n // If opts.since exists, get all the changes from the sequence\n // number given by opts.since. Otherwise, get all the changes\n // from the sequence number 0.\n var results = {results: []};\n\n var fetched = function (err, res) {\n if (opts.aborted) {\n return;\n }\n var raw_results_length = 0;\n // If the result of the ajax call (res) contains changes (res.results)\n if (res && res.results) {\n raw_results_length = res.results.length;\n results.last_seq = res.last_seq;\n var pending = null;\n var lastSeq = null;\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof res.pending === 'number') {\n pending = res.pending;\n }\n if (typeof results.last_seq === 'string' || typeof results.last_seq === 'number') {\n lastSeq = results.last_seq;\n }\n // For each change\n var req = {};\n req.query = opts.query_params;\n res.results = res.results.filter(function (c) {\n leftToFetch--;\n var ret = filterChange(opts)(c);\n if (ret) {\n if (opts.include_docs && opts.attachments && opts.binary) {\n readAttachmentsAsBlobOrBuffer(c);\n }\n if (opts.return_docs) {\n results.results.push(c);\n }\n opts.onChange(c, pending, lastSeq);\n }\n return ret;\n });\n } else if (err) {\n // In case of an error, stop listening for changes and call\n // opts.complete\n opts.aborted = true;\n opts.complete(err);\n return;\n }\n\n // The changes feed may have timed out with no results\n // if so reuse last update sequence\n if (res && res.last_seq) {\n lastFetchedSeq = res.last_seq;\n }\n\n var finished = (limit && leftToFetch <= 0) ||\n (res && raw_results_length < batchSize) ||\n (opts.descending);\n\n if ((opts.continuous && !(limit && leftToFetch <= 0)) || !finished) {\n // Queue a call to fetch again with the newest sequence number\n immediate(function () { fetchData(lastFetchedSeq, fetched); });\n } else {\n // We're done, call the callback\n opts.complete(null, results);\n }\n };\n\n fetchData(opts.since || 0, fetched);\n\n // Return a method to cancel this method from processing any more\n return {\n cancel: function () {\n opts.aborted = true;\n controller.abort();\n }\n };\n };\n\n // Given a set of document/revision IDs (given by req), tets the subset of\n // those that do NOT correspond to revisions stored in the database.\n // See http://wiki.apache.org/couchdb/HttpPostRevsDiff\n api.revsDiff = adapterFun$$1('revsDiff', function (req, opts, callback) {\n // If no options were given, set the callback to be the second parameter\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n // Get the missing document/revision IDs\n fetchJSON(genDBUrl(host, '_revs_diff'), {\n method: 'POST',\n body: JSON.stringify(req)\n }, callback).catch(callback);\n });\n\n api._close = function (callback) {\n callback();\n };\n\n api._destroy = function (options, callback) {\n fetchJSON(genDBUrl(host, ''), {method: 'DELETE'}).then(function (json) {\n callback(null, json);\n }).catch(function (err) {\n /* istanbul ignore if */\n if (err.status === 404) {\n callback(null, {ok: true});\n } else {\n callback(err);\n }\n });\n };\n}\n\n// HttpPouch is a valid adapter.\nHttpPouch.valid = function () {\n return true;\n};\n\nfunction HttpPouch$1 (PouchDB) {\n PouchDB.adapter('http', HttpPouch, false);\n PouchDB.adapter('https', HttpPouch, false);\n}\n\nfunction QueryParseError(message) {\n this.status = 400;\n this.name = 'query_parse_error';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, QueryParseError);\n } catch (e) {}\n}\n\ninherits(QueryParseError, Error);\n\nfunction NotFoundError(message) {\n this.status = 404;\n this.name = 'not_found';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, NotFoundError);\n } catch (e) {}\n}\n\ninherits(NotFoundError, Error);\n\nfunction BuiltInError(message) {\n this.status = 500;\n this.name = 'invalid_value';\n this.message = message;\n this.error = true;\n try {\n Error.captureStackTrace(this, BuiltInError);\n } catch (e) {}\n}\n\ninherits(BuiltInError, Error);\n\nfunction promisedCallback(promise, callback) {\n if (callback) {\n promise.then(function (res) {\n immediate(function () {\n callback(null, res);\n });\n }, function (reason) {\n immediate(function () {\n callback(reason);\n });\n });\n }\n return promise;\n}\n\nfunction callbackify(fun) {\n return getArguments(function (args) {\n var cb = args.pop();\n var promise = fun.apply(this, args);\n if (typeof cb === 'function') {\n promisedCallback(promise, cb);\n }\n return promise;\n });\n}\n\n// Promise finally util similar to Q.finally\nfunction fin(promise, finalPromiseFactory) {\n return promise.then(function (res) {\n return finalPromiseFactory().then(function () {\n return res;\n });\n }, function (reason) {\n return finalPromiseFactory().then(function () {\n throw reason;\n });\n });\n}\n\nfunction sequentialize(queue, promiseFactory) {\n return function () {\n var args = arguments;\n var that = this;\n return queue.add(function () {\n return promiseFactory.apply(that, args);\n });\n };\n}\n\n// uniq an array of strings, order not guaranteed\n// similar to underscore/lodash _.uniq\nfunction uniq(arr) {\n var theSet = new ExportedSet(arr);\n var result = new Array(theSet.size);\n var index = -1;\n theSet.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\nfunction mapToKeysArray(map) {\n var result = new Array(map.size);\n var index = -1;\n map.forEach(function (value, key) {\n result[++index] = key;\n });\n return result;\n}\n\nfunction createBuiltInError(name) {\n var message = 'builtin ' + name +\n ' function requires map values to be numbers' +\n ' or number arrays';\n return new BuiltInError(message);\n}\n\nfunction sum(values) {\n var result = 0;\n for (var i = 0, len = values.length; i < len; i++) {\n var num = values[i];\n if (typeof num !== 'number') {\n if (Array.isArray(num)) {\n // lists of numbers are also allowed, sum them separately\n result = typeof result === 'number' ? [result] : result;\n for (var j = 0, jLen = num.length; j < jLen; j++) {\n var jNum = num[j];\n if (typeof jNum !== 'number') {\n throw createBuiltInError('_sum');\n } else if (typeof result[j] === 'undefined') {\n result.push(jNum);\n } else {\n result[j] += jNum;\n }\n }\n } else { // not array/number\n throw createBuiltInError('_sum');\n }\n } else if (typeof result === 'number') {\n result += num;\n } else { // add number to array\n result[0] += num;\n }\n }\n return result;\n}\n\nvar log = guardedConsole.bind(null, 'log');\nvar isArray = Array.isArray;\nvar toJSON = JSON.parse;\n\nfunction evalFunctionWithEval(func, emit) {\n return scopeEval(\n \"return (\" + func.replace(/;\\s*$/, \"\") + \");\",\n {\n emit: emit,\n sum: sum,\n log: log,\n isArray: isArray,\n toJSON: toJSON\n }\n );\n}\n\n/*\n * Simple task queue to sequentialize actions. Assumes\n * callbacks will eventually fire (once).\n */\n\n\nfunction TaskQueue$1() {\n this.promise = new Promise(function (fulfill) {fulfill(); });\n}\nTaskQueue$1.prototype.add = function (promiseFactory) {\n this.promise = this.promise.catch(function () {\n // just recover\n }).then(function () {\n return promiseFactory();\n });\n return this.promise;\n};\nTaskQueue$1.prototype.finish = function () {\n return this.promise;\n};\n\nfunction stringify(input) {\n if (!input) {\n return 'undefined'; // backwards compat for empty reduce\n }\n // for backwards compat with mapreduce, functions/strings are stringified\n // as-is. everything else is JSON-stringified.\n switch (typeof input) {\n case 'function':\n // e.g. a mapreduce map\n return input.toString();\n case 'string':\n // e.g. a mapreduce built-in _reduce function\n return input.toString();\n default:\n // e.g. a JSON object in the case of mango queries\n return JSON.stringify(input);\n }\n}\n\n/* create a string signature for a view so we can cache it and uniq it */\nfunction createViewSignature(mapFun, reduceFun) {\n // the \"undefined\" part is for backwards compatibility\n return stringify(mapFun) + stringify(reduceFun) + 'undefined';\n}\n\nfunction createView(sourceDB, viewName, mapFun, reduceFun, temporary, localDocName) {\n var viewSignature = createViewSignature(mapFun, reduceFun);\n\n var cachedViews;\n if (!temporary) {\n // cache this to ensure we don't try to update the same view twice\n cachedViews = sourceDB._cachedViews = sourceDB._cachedViews || {};\n if (cachedViews[viewSignature]) {\n return cachedViews[viewSignature];\n }\n }\n\n var promiseForView = sourceDB.info().then(function (info) {\n\n var depDbName = info.db_name + '-mrview-' +\n (temporary ? 'temp' : stringMd5(viewSignature));\n\n // save the view name in the source db so it can be cleaned up if necessary\n // (e.g. when the _design doc is deleted, remove all associated view data)\n function diffFunction(doc) {\n doc.views = doc.views || {};\n var fullViewName = viewName;\n if (fullViewName.indexOf('/') === -1) {\n fullViewName = viewName + '/' + viewName;\n }\n var depDbs = doc.views[fullViewName] = doc.views[fullViewName] || {};\n /* istanbul ignore if */\n if (depDbs[depDbName]) {\n return; // no update necessary\n }\n depDbs[depDbName] = true;\n return doc;\n }\n return upsert(sourceDB, '_local/' + localDocName, diffFunction).then(function () {\n return sourceDB.registerDependentDatabase(depDbName).then(function (res) {\n var db = res.db;\n db.auto_compaction = true;\n var view = {\n name: depDbName,\n db: db,\n sourceDB: sourceDB,\n adapter: sourceDB.adapter,\n mapFun: mapFun,\n reduceFun: reduceFun\n };\n return view.db.get('_local/lastSeq').catch(function (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n throw err;\n }\n }).then(function (lastSeqDoc) {\n view.seq = lastSeqDoc ? lastSeqDoc.seq : 0;\n if (cachedViews) {\n view.db.once('destroyed', function () {\n delete cachedViews[viewSignature];\n });\n }\n return view;\n });\n });\n });\n });\n\n if (cachedViews) {\n cachedViews[viewSignature] = promiseForView;\n }\n return promiseForView;\n}\n\nvar persistentQueues = {};\nvar tempViewQueue = new TaskQueue$1();\nvar CHANGES_BATCH_SIZE$1 = 50;\n\nfunction parseViewName(name) {\n // can be either 'ddocname/viewname' or just 'viewname'\n // (where the ddoc name is the same)\n return name.indexOf('/') === -1 ? [name, name] : name.split('/');\n}\n\nfunction isGenOne(changes) {\n // only return true if the current change is 1-\n // and there are no other leafs\n return changes.length === 1 && /^1-/.test(changes[0].rev);\n}\n\nfunction emitError(db, e) {\n try {\n db.emit('error', e);\n } catch (err) {\n guardedConsole('error',\n 'The user\\'s map/reduce function threw an uncaught error.\\n' +\n 'You can debug this error by doing:\\n' +\n 'myDatabase.on(\\'error\\', function (err) { debugger; });\\n' +\n 'Please double-check your map/reduce function.');\n guardedConsole('error', e);\n }\n}\n\n/**\n * Returns an \"abstract\" mapreduce object of the form:\n *\n * {\n * query: queryFun,\n * viewCleanup: viewCleanupFun\n * }\n *\n * Arguments are:\n *\n * localDoc: string\n * This is for the local doc that gets saved in order to track the\n * \"dependent\" DBs and clean them up for viewCleanup. It should be\n * unique, so that indexer plugins don't collide with each other.\n * mapper: function (mapFunDef, emit)\n * Returns a map function based on the mapFunDef, which in the case of\n * normal map/reduce is just the de-stringified function, but may be\n * something else, such as an object in the case of pouchdb-find.\n * reducer: function (reduceFunDef)\n * Ditto, but for reducing. Modules don't have to support reducing\n * (e.g. pouchdb-find).\n * ddocValidator: function (ddoc, viewName)\n * Throws an error if the ddoc or viewName is not valid.\n * This could be a way to communicate to the user that the configuration for the\n * indexer is invalid.\n */\nfunction createAbstractMapReduce(localDocName, mapper, reducer, ddocValidator) {\n\n function tryMap(db, fun, doc) {\n // emit an event if there was an error thrown by a map function.\n // putting try/catches in a single function also avoids deoptimizations.\n try {\n fun(doc);\n } catch (e) {\n emitError(db, e);\n }\n }\n\n function tryReduce(db, fun, keys, values, rereduce) {\n // same as above, but returning the result or an error. there are two separate\n // functions to avoid extra memory allocations since the tryCode() case is used\n // for custom map functions (common) vs this function, which is only used for\n // custom reduce functions (rare)\n try {\n return {output : fun(keys, values, rereduce)};\n } catch (e) {\n emitError(db, e);\n return {error: e};\n }\n }\n\n function sortByKeyThenValue(x, y) {\n var keyCompare = collate(x.key, y.key);\n return keyCompare !== 0 ? keyCompare : collate(x.value, y.value);\n }\n\n function sliceResults(results, limit, skip) {\n skip = skip || 0;\n if (typeof limit === 'number') {\n return results.slice(skip, limit + skip);\n } else if (skip > 0) {\n return results.slice(skip);\n }\n return results;\n }\n\n function rowToDocId(row) {\n var val = row.value;\n // Users can explicitly specify a joined doc _id, or it\n // defaults to the doc _id that emitted the key/value.\n var docId = (val && typeof val === 'object' && val._id) || row.id;\n return docId;\n }\n\n function readAttachmentsAsBlobOrBuffer(res) {\n res.rows.forEach(function (row) {\n var atts = row.doc && row.doc._attachments;\n if (!atts) {\n return;\n }\n Object.keys(atts).forEach(function (filename) {\n var att = atts[filename];\n atts[filename].data = b64ToBluffer(att.data, att.content_type);\n });\n });\n }\n\n function postprocessAttachments(opts) {\n return function (res) {\n if (opts.include_docs && opts.attachments && opts.binary) {\n readAttachmentsAsBlobOrBuffer(res);\n }\n return res;\n };\n }\n\n function addHttpParam(paramName, opts, params, asJson) {\n // add an http param from opts to params, optionally json-encoded\n var val = opts[paramName];\n if (typeof val !== 'undefined') {\n if (asJson) {\n val = encodeURIComponent(JSON.stringify(val));\n }\n params.push(paramName + '=' + val);\n }\n }\n\n function coerceInteger(integerCandidate) {\n if (typeof integerCandidate !== 'undefined') {\n var asNumber = Number(integerCandidate);\n // prevents e.g. '1foo' or '1.1' being coerced to 1\n if (!isNaN(asNumber) && asNumber === parseInt(integerCandidate, 10)) {\n return asNumber;\n } else {\n return integerCandidate;\n }\n }\n }\n\n function coerceOptions(opts) {\n opts.group_level = coerceInteger(opts.group_level);\n opts.limit = coerceInteger(opts.limit);\n opts.skip = coerceInteger(opts.skip);\n return opts;\n }\n\n function checkPositiveInteger(number) {\n if (number) {\n if (typeof number !== 'number') {\n return new QueryParseError('Invalid value for integer: \"' +\n number + '\"');\n }\n if (number < 0) {\n return new QueryParseError('Invalid value for positive integer: ' +\n '\"' + number + '\"');\n }\n }\n }\n\n function checkQueryParseError(options, fun) {\n var startkeyName = options.descending ? 'endkey' : 'startkey';\n var endkeyName = options.descending ? 'startkey' : 'endkey';\n\n if (typeof options[startkeyName] !== 'undefined' &&\n typeof options[endkeyName] !== 'undefined' &&\n collate(options[startkeyName], options[endkeyName]) > 0) {\n throw new QueryParseError('No rows can match your key range, ' +\n 'reverse your start_key and end_key or set {descending : true}');\n } else if (fun.reduce && options.reduce !== false) {\n if (options.include_docs) {\n throw new QueryParseError('{include_docs:true} is invalid for reduce');\n } else if (options.keys && options.keys.length > 1 &&\n !options.group && !options.group_level) {\n throw new QueryParseError('Multi-key fetches for reduce views must use ' +\n '{group: true}');\n }\n }\n ['group_level', 'limit', 'skip'].forEach(function (optionName) {\n var error = checkPositiveInteger(options[optionName]);\n if (error) {\n throw error;\n }\n });\n }\n\n function httpQuery(db, fun, opts) {\n // List of parameters to add to the PUT request\n var params = [];\n var body;\n var method = 'GET';\n var ok, status;\n\n // If opts.reduce exists and is defined, then add it to the list\n // of parameters.\n // If reduce=false then the results are that of only the map function\n // not the final result of map and reduce.\n addHttpParam('reduce', opts, params);\n addHttpParam('include_docs', opts, params);\n addHttpParam('attachments', opts, params);\n addHttpParam('limit', opts, params);\n addHttpParam('descending', opts, params);\n addHttpParam('group', opts, params);\n addHttpParam('group_level', opts, params);\n addHttpParam('skip', opts, params);\n addHttpParam('stale', opts, params);\n addHttpParam('conflicts', opts, params);\n addHttpParam('startkey', opts, params, true);\n addHttpParam('start_key', opts, params, true);\n addHttpParam('endkey', opts, params, true);\n addHttpParam('end_key', opts, params, true);\n addHttpParam('inclusive_end', opts, params);\n addHttpParam('key', opts, params, true);\n addHttpParam('update_seq', opts, params);\n\n // Format the list of parameters into a valid URI query string\n params = params.join('&');\n params = params === '' ? '' : '?' + params;\n\n // If keys are supplied, issue a POST to circumvent GET query string limits\n // see http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options\n if (typeof opts.keys !== 'undefined') {\n var MAX_URL_LENGTH = 2000;\n // according to http://stackoverflow.com/a/417184/680742,\n // the de facto URL length limit is 2000 characters\n\n var keysAsString =\n 'keys=' + encodeURIComponent(JSON.stringify(opts.keys));\n if (keysAsString.length + params.length + 1 <= MAX_URL_LENGTH) {\n // If the keys are short enough, do a GET. we do this to work around\n // Safari not understanding 304s on POSTs (see pouchdb/pouchdb#1239)\n params += (params[0] === '?' ? '&' : '?') + keysAsString;\n } else {\n method = 'POST';\n if (typeof fun === 'string') {\n body = {keys: opts.keys};\n } else { // fun is {map : mapfun}, so append to this\n fun.keys = opts.keys;\n }\n }\n }\n\n // We are referencing a query defined in the design doc\n if (typeof fun === 'string') {\n var parts = parseViewName(fun);\n return db.fetch('_design/' + parts[0] + '/_view/' + parts[1] + params, {\n headers: new h({'Content-Type': 'application/json'}),\n method: method,\n body: JSON.stringify(body)\n }).then(function (response) {\n ok = response.ok;\n status = response.status;\n return response.json();\n }).then(function (result) {\n if (!ok) {\n result.status = status;\n throw generateErrorFromResponse(result);\n }\n // fail the entire request if the result contains an error\n result.rows.forEach(function (row) {\n /* istanbul ignore if */\n if (row.value && row.value.error && row.value.error === \"builtin_reduce_error\") {\n throw new Error(row.reason);\n }\n });\n return result;\n }).then(postprocessAttachments(opts));\n }\n\n // We are using a temporary view, terrible for performance, good for testing\n body = body || {};\n Object.keys(fun).forEach(function (key) {\n if (Array.isArray(fun[key])) {\n body[key] = fun[key];\n } else {\n body[key] = fun[key].toString();\n }\n });\n\n return db.fetch('_temp_view' + params, {\n headers: new h({'Content-Type': 'application/json'}),\n method: 'POST',\n body: JSON.stringify(body)\n }).then(function (response) {\n ok = response.ok;\n status = response.status;\n return response.json();\n }).then(function (result) {\n if (!ok) {\n result.status = status;\n throw generateErrorFromResponse(result);\n }\n return result;\n }).then(postprocessAttachments(opts));\n }\n\n // custom adapters can define their own api._query\n // and override the default behavior\n /* istanbul ignore next */\n function customQuery(db, fun, opts) {\n return new Promise(function (resolve, reject) {\n db._query(fun, opts, function (err, res) {\n if (err) {\n return reject(err);\n }\n resolve(res);\n });\n });\n }\n\n // custom adapters can define their own api._viewCleanup\n // and override the default behavior\n /* istanbul ignore next */\n function customViewCleanup(db) {\n return new Promise(function (resolve, reject) {\n db._viewCleanup(function (err, res) {\n if (err) {\n return reject(err);\n }\n resolve(res);\n });\n });\n }\n\n function defaultsTo(value) {\n return function (reason) {\n /* istanbul ignore else */\n if (reason.status === 404) {\n return value;\n } else {\n throw reason;\n }\n };\n }\n\n // returns a promise for a list of docs to update, based on the input docId.\n // the order doesn't matter, because post-3.2.0, bulkDocs\n // is an atomic operation in all three adapters.\n function getDocsToPersist(docId, view, docIdsToChangesAndEmits) {\n var metaDocId = '_local/doc_' + docId;\n var defaultMetaDoc = {_id: metaDocId, keys: []};\n var docData = docIdsToChangesAndEmits.get(docId);\n var indexableKeysToKeyValues = docData[0];\n var changes = docData[1];\n\n function getMetaDoc() {\n if (isGenOne(changes)) {\n // generation 1, so we can safely assume initial state\n // for performance reasons (avoids unnecessary GETs)\n return Promise.resolve(defaultMetaDoc);\n }\n return view.db.get(metaDocId).catch(defaultsTo(defaultMetaDoc));\n }\n\n function getKeyValueDocs(metaDoc) {\n if (!metaDoc.keys.length) {\n // no keys, no need for a lookup\n return Promise.resolve({rows: []});\n }\n return view.db.allDocs({\n keys: metaDoc.keys,\n include_docs: true\n });\n }\n\n function processKeyValueDocs(metaDoc, kvDocsRes) {\n var kvDocs = [];\n var oldKeys = new ExportedSet();\n\n for (var i = 0, len = kvDocsRes.rows.length; i < len; i++) {\n var row = kvDocsRes.rows[i];\n var doc = row.doc;\n if (!doc) { // deleted\n continue;\n }\n kvDocs.push(doc);\n oldKeys.add(doc._id);\n doc._deleted = !indexableKeysToKeyValues.has(doc._id);\n if (!doc._deleted) {\n var keyValue = indexableKeysToKeyValues.get(doc._id);\n if ('value' in keyValue) {\n doc.value = keyValue.value;\n }\n }\n }\n var newKeys = mapToKeysArray(indexableKeysToKeyValues);\n newKeys.forEach(function (key) {\n if (!oldKeys.has(key)) {\n // new doc\n var kvDoc = {\n _id: key\n };\n var keyValue = indexableKeysToKeyValues.get(key);\n if ('value' in keyValue) {\n kvDoc.value = keyValue.value;\n }\n kvDocs.push(kvDoc);\n }\n });\n metaDoc.keys = uniq(newKeys.concat(metaDoc.keys));\n kvDocs.push(metaDoc);\n\n return kvDocs;\n }\n\n return getMetaDoc().then(function (metaDoc) {\n return getKeyValueDocs(metaDoc).then(function (kvDocsRes) {\n return processKeyValueDocs(metaDoc, kvDocsRes);\n });\n });\n }\n\n // updates all emitted key/value docs and metaDocs in the mrview database\n // for the given batch of documents from the source database\n function saveKeyValues(view, docIdsToChangesAndEmits, seq) {\n var seqDocId = '_local/lastSeq';\n return view.db.get(seqDocId)\n .catch(defaultsTo({_id: seqDocId, seq: 0}))\n .then(function (lastSeqDoc) {\n var docIds = mapToKeysArray(docIdsToChangesAndEmits);\n return Promise.all(docIds.map(function (docId) {\n return getDocsToPersist(docId, view, docIdsToChangesAndEmits);\n })).then(function (listOfDocsToPersist) {\n var docsToPersist = flatten(listOfDocsToPersist);\n lastSeqDoc.seq = seq;\n docsToPersist.push(lastSeqDoc);\n // write all docs in a single operation, update the seq once\n return view.db.bulkDocs({docs : docsToPersist});\n });\n });\n }\n\n function getQueue(view) {\n var viewName = typeof view === 'string' ? view : view.name;\n var queue = persistentQueues[viewName];\n if (!queue) {\n queue = persistentQueues[viewName] = new TaskQueue$1();\n }\n return queue;\n }\n\n function updateView(view) {\n return sequentialize(getQueue(view), function () {\n return updateViewInQueue(view);\n })();\n }\n\n function updateViewInQueue(view) {\n // bind the emit function once\n var mapResults;\n var doc;\n\n function emit(key, value) {\n var output = {id: doc._id, key: normalizeKey(key)};\n // Don't explicitly store the value unless it's defined and non-null.\n // This saves on storage space, because often people don't use it.\n if (typeof value !== 'undefined' && value !== null) {\n output.value = normalizeKey(value);\n }\n mapResults.push(output);\n }\n\n var mapFun = mapper(view.mapFun, emit);\n\n var currentSeq = view.seq || 0;\n\n function processChange(docIdsToChangesAndEmits, seq) {\n return function () {\n return saveKeyValues(view, docIdsToChangesAndEmits, seq);\n };\n }\n\n var queue = new TaskQueue$1();\n\n function processNextBatch() {\n return view.sourceDB.changes({\n return_docs: true,\n conflicts: true,\n include_docs: true,\n style: 'all_docs',\n since: currentSeq,\n limit: CHANGES_BATCH_SIZE$1\n }).then(processBatch);\n }\n\n function processBatch(response) {\n var results = response.results;\n if (!results.length) {\n return;\n }\n var docIdsToChangesAndEmits = createDocIdsToChangesAndEmits(results);\n queue.add(processChange(docIdsToChangesAndEmits, currentSeq));\n if (results.length < CHANGES_BATCH_SIZE$1) {\n return;\n }\n return processNextBatch();\n }\n\n function createDocIdsToChangesAndEmits(results) {\n var docIdsToChangesAndEmits = new ExportedMap();\n for (var i = 0, len = results.length; i < len; i++) {\n var change = results[i];\n if (change.doc._id[0] !== '_') {\n mapResults = [];\n doc = change.doc;\n\n if (!doc._deleted) {\n tryMap(view.sourceDB, mapFun, doc);\n }\n mapResults.sort(sortByKeyThenValue);\n\n var indexableKeysToKeyValues = createIndexableKeysToKeyValues(mapResults);\n docIdsToChangesAndEmits.set(change.doc._id, [\n indexableKeysToKeyValues,\n change.changes\n ]);\n }\n currentSeq = change.seq;\n }\n return docIdsToChangesAndEmits;\n }\n\n function createIndexableKeysToKeyValues(mapResults) {\n var indexableKeysToKeyValues = new ExportedMap();\n var lastKey;\n for (var i = 0, len = mapResults.length; i < len; i++) {\n var emittedKeyValue = mapResults[i];\n var complexKey = [emittedKeyValue.key, emittedKeyValue.id];\n if (i > 0 && collate(emittedKeyValue.key, lastKey) === 0) {\n complexKey.push(i); // dup key+id, so make it unique\n }\n indexableKeysToKeyValues.set(toIndexableString(complexKey), emittedKeyValue);\n lastKey = emittedKeyValue.key;\n }\n return indexableKeysToKeyValues;\n }\n\n return processNextBatch().then(function () {\n return queue.finish();\n }).then(function () {\n view.seq = currentSeq;\n });\n }\n\n function reduceView(view, results, options) {\n if (options.group_level === 0) {\n delete options.group_level;\n }\n\n var shouldGroup = options.group || options.group_level;\n\n var reduceFun = reducer(view.reduceFun);\n\n var groups = [];\n var lvl = isNaN(options.group_level) ? Number.POSITIVE_INFINITY :\n options.group_level;\n results.forEach(function (e) {\n var last = groups[groups.length - 1];\n var groupKey = shouldGroup ? e.key : null;\n\n // only set group_level for array keys\n if (shouldGroup && Array.isArray(groupKey)) {\n groupKey = groupKey.slice(0, lvl);\n }\n\n if (last && collate(last.groupKey, groupKey) === 0) {\n last.keys.push([e.key, e.id]);\n last.values.push(e.value);\n return;\n }\n groups.push({\n keys: [[e.key, e.id]],\n values: [e.value],\n groupKey: groupKey\n });\n });\n results = [];\n for (var i = 0, len = groups.length; i < len; i++) {\n var e = groups[i];\n var reduceTry = tryReduce(view.sourceDB, reduceFun, e.keys, e.values, false);\n if (reduceTry.error && reduceTry.error instanceof BuiltInError) {\n // CouchDB returns an error if a built-in errors out\n throw reduceTry.error;\n }\n results.push({\n // CouchDB just sets the value to null if a non-built-in errors out\n value: reduceTry.error ? null : reduceTry.output,\n key: e.groupKey\n });\n }\n // no total_rows/offset when reducing\n return {rows: sliceResults(results, options.limit, options.skip)};\n }\n\n function queryView(view, opts) {\n return sequentialize(getQueue(view), function () {\n return queryViewInQueue(view, opts);\n })();\n }\n\n function queryViewInQueue(view, opts) {\n var totalRows;\n var shouldReduce = view.reduceFun && opts.reduce !== false;\n var skip = opts.skip || 0;\n if (typeof opts.keys !== 'undefined' && !opts.keys.length) {\n // equivalent query\n opts.limit = 0;\n delete opts.keys;\n }\n\n function fetchFromView(viewOpts) {\n viewOpts.include_docs = true;\n return view.db.allDocs(viewOpts).then(function (res) {\n totalRows = res.total_rows;\n return res.rows.map(function (result) {\n\n // implicit migration - in older versions of PouchDB,\n // we explicitly stored the doc as {id: ..., key: ..., value: ...}\n // this is tested in a migration test\n /* istanbul ignore next */\n if ('value' in result.doc && typeof result.doc.value === 'object' &&\n result.doc.value !== null) {\n var keys = Object.keys(result.doc.value).sort();\n // this detection method is not perfect, but it's unlikely the user\n // emitted a value which was an object with these 3 exact keys\n var expectedKeys = ['id', 'key', 'value'];\n if (!(keys < expectedKeys || keys > expectedKeys)) {\n return result.doc.value;\n }\n }\n\n var parsedKeyAndDocId = parseIndexableString(result.doc._id);\n return {\n key: parsedKeyAndDocId[0],\n id: parsedKeyAndDocId[1],\n value: ('value' in result.doc ? result.doc.value : null)\n };\n });\n });\n }\n\n function onMapResultsReady(rows) {\n var finalResults;\n if (shouldReduce) {\n finalResults = reduceView(view, rows, opts);\n } else {\n finalResults = {\n total_rows: totalRows,\n offset: skip,\n rows: rows\n };\n }\n /* istanbul ignore if */\n if (opts.update_seq) {\n finalResults.update_seq = view.seq;\n }\n if (opts.include_docs) {\n var docIds = uniq(rows.map(rowToDocId));\n\n return view.sourceDB.allDocs({\n keys: docIds,\n include_docs: true,\n conflicts: opts.conflicts,\n attachments: opts.attachments,\n binary: opts.binary\n }).then(function (allDocsRes) {\n var docIdsToDocs = new ExportedMap();\n allDocsRes.rows.forEach(function (row) {\n docIdsToDocs.set(row.id, row.doc);\n });\n rows.forEach(function (row) {\n var docId = rowToDocId(row);\n var doc = docIdsToDocs.get(docId);\n if (doc) {\n row.doc = doc;\n }\n });\n return finalResults;\n });\n } else {\n return finalResults;\n }\n }\n\n if (typeof opts.keys !== 'undefined') {\n var keys = opts.keys;\n var fetchPromises = keys.map(function (key) {\n var viewOpts = {\n startkey : toIndexableString([key]),\n endkey : toIndexableString([key, {}])\n };\n /* istanbul ignore if */\n if (opts.update_seq) {\n viewOpts.update_seq = true;\n }\n return fetchFromView(viewOpts);\n });\n return Promise.all(fetchPromises).then(flatten).then(onMapResultsReady);\n } else { // normal query, no 'keys'\n var viewOpts = {\n descending : opts.descending\n };\n /* istanbul ignore if */\n if (opts.update_seq) {\n viewOpts.update_seq = true;\n }\n var startkey;\n var endkey;\n if ('start_key' in opts) {\n startkey = opts.start_key;\n }\n if ('startkey' in opts) {\n startkey = opts.startkey;\n }\n if ('end_key' in opts) {\n endkey = opts.end_key;\n }\n if ('endkey' in opts) {\n endkey = opts.endkey;\n }\n if (typeof startkey !== 'undefined') {\n viewOpts.startkey = opts.descending ?\n toIndexableString([startkey, {}]) :\n toIndexableString([startkey]);\n }\n if (typeof endkey !== 'undefined') {\n var inclusiveEnd = opts.inclusive_end !== false;\n if (opts.descending) {\n inclusiveEnd = !inclusiveEnd;\n }\n\n viewOpts.endkey = toIndexableString(\n inclusiveEnd ? [endkey, {}] : [endkey]);\n }\n if (typeof opts.key !== 'undefined') {\n var keyStart = toIndexableString([opts.key]);\n var keyEnd = toIndexableString([opts.key, {}]);\n if (viewOpts.descending) {\n viewOpts.endkey = keyStart;\n viewOpts.startkey = keyEnd;\n } else {\n viewOpts.startkey = keyStart;\n viewOpts.endkey = keyEnd;\n }\n }\n if (!shouldReduce) {\n if (typeof opts.limit === 'number') {\n viewOpts.limit = opts.limit;\n }\n viewOpts.skip = skip;\n }\n return fetchFromView(viewOpts).then(onMapResultsReady);\n }\n }\n\n function httpViewCleanup(db) {\n return db.fetch('_view_cleanup', {\n headers: new h({'Content-Type': 'application/json'}),\n method: 'POST'\n }).then(function (response) {\n return response.json();\n });\n }\n\n function localViewCleanup(db) {\n return db.get('_local/' + localDocName).then(function (metaDoc) {\n var docsToViews = new ExportedMap();\n Object.keys(metaDoc.views).forEach(function (fullViewName) {\n var parts = parseViewName(fullViewName);\n var designDocName = '_design/' + parts[0];\n var viewName = parts[1];\n var views = docsToViews.get(designDocName);\n if (!views) {\n views = new ExportedSet();\n docsToViews.set(designDocName, views);\n }\n views.add(viewName);\n });\n var opts = {\n keys : mapToKeysArray(docsToViews),\n include_docs : true\n };\n return db.allDocs(opts).then(function (res) {\n var viewsToStatus = {};\n res.rows.forEach(function (row) {\n var ddocName = row.key.substring(8); // cuts off '_design/'\n docsToViews.get(row.key).forEach(function (viewName) {\n var fullViewName = ddocName + '/' + viewName;\n /* istanbul ignore if */\n if (!metaDoc.views[fullViewName]) {\n // new format, without slashes, to support PouchDB 2.2.0\n // migration test in pouchdb's browser.migration.js verifies this\n fullViewName = viewName;\n }\n var viewDBNames = Object.keys(metaDoc.views[fullViewName]);\n // design doc deleted, or view function nonexistent\n var statusIsGood = row.doc && row.doc.views &&\n row.doc.views[viewName];\n viewDBNames.forEach(function (viewDBName) {\n viewsToStatus[viewDBName] =\n viewsToStatus[viewDBName] || statusIsGood;\n });\n });\n });\n var dbsToDelete = Object.keys(viewsToStatus).filter(\n function (viewDBName) { return !viewsToStatus[viewDBName]; });\n var destroyPromises = dbsToDelete.map(function (viewDBName) {\n return sequentialize(getQueue(viewDBName), function () {\n return new db.constructor(viewDBName, db.__opts).destroy();\n })();\n });\n return Promise.all(destroyPromises).then(function () {\n return {ok: true};\n });\n });\n }, defaultsTo({ok: true}));\n }\n\n function queryPromised(db, fun, opts) {\n /* istanbul ignore next */\n if (typeof db._query === 'function') {\n return customQuery(db, fun, opts);\n }\n if (isRemote(db)) {\n return httpQuery(db, fun, opts);\n }\n\n if (typeof fun !== 'string') {\n // temp_view\n checkQueryParseError(opts, fun);\n\n tempViewQueue.add(function () {\n var createViewPromise = createView(\n /* sourceDB */ db,\n /* viewName */ 'temp_view/temp_view',\n /* mapFun */ fun.map,\n /* reduceFun */ fun.reduce,\n /* temporary */ true,\n /* localDocName */ localDocName);\n return createViewPromise.then(function (view) {\n return fin(updateView(view).then(function () {\n return queryView(view, opts);\n }), function () {\n return view.db.destroy();\n });\n });\n });\n return tempViewQueue.finish();\n } else {\n // persistent view\n var fullViewName = fun;\n var parts = parseViewName(fullViewName);\n var designDocName = parts[0];\n var viewName = parts[1];\n return db.get('_design/' + designDocName).then(function (doc) {\n var fun = doc.views && doc.views[viewName];\n\n if (!fun) {\n // basic validator; it's assumed that every subclass would want this\n throw new NotFoundError('ddoc ' + doc._id + ' has no view named ' +\n viewName);\n }\n\n ddocValidator(doc, viewName);\n checkQueryParseError(opts, fun);\n\n var createViewPromise = createView(\n /* sourceDB */ db,\n /* viewName */ fullViewName,\n /* mapFun */ fun.map,\n /* reduceFun */ fun.reduce,\n /* temporary */ false,\n /* localDocName */ localDocName);\n return createViewPromise.then(function (view) {\n if (opts.stale === 'ok' || opts.stale === 'update_after') {\n if (opts.stale === 'update_after') {\n immediate(function () {\n updateView(view);\n });\n }\n return queryView(view, opts);\n } else { // stale not ok\n return updateView(view).then(function () {\n return queryView(view, opts);\n });\n }\n });\n });\n }\n }\n\n function abstractQuery(fun, opts, callback) {\n var db = this;\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n opts = opts ? coerceOptions(opts) : {};\n\n if (typeof fun === 'function') {\n fun = {map : fun};\n }\n\n var promise = Promise.resolve().then(function () {\n return queryPromised(db, fun, opts);\n });\n promisedCallback(promise, callback);\n return promise;\n }\n\n var abstractViewCleanup = callbackify(function () {\n var db = this;\n /* istanbul ignore next */\n if (typeof db._viewCleanup === 'function') {\n return customViewCleanup(db);\n }\n if (isRemote(db)) {\n return httpViewCleanup(db);\n }\n return localViewCleanup(db);\n });\n\n return {\n query: abstractQuery,\n viewCleanup: abstractViewCleanup\n };\n}\n\nvar builtInReduce = {\n _sum: function (keys, values) {\n return sum(values);\n },\n\n _count: function (keys, values) {\n return values.length;\n },\n\n _stats: function (keys, values) {\n // no need to implement rereduce=true, because Pouch\n // will never call it\n function sumsqr(values) {\n var _sumsqr = 0;\n for (var i = 0, len = values.length; i < len; i++) {\n var num = values[i];\n _sumsqr += (num * num);\n }\n return _sumsqr;\n }\n return {\n sum : sum(values),\n min : Math.min.apply(null, values),\n max : Math.max.apply(null, values),\n count : values.length,\n sumsqr : sumsqr(values)\n };\n }\n};\n\nfunction getBuiltIn(reduceFunString) {\n if (/^_sum/.test(reduceFunString)) {\n return builtInReduce._sum;\n } else if (/^_count/.test(reduceFunString)) {\n return builtInReduce._count;\n } else if (/^_stats/.test(reduceFunString)) {\n return builtInReduce._stats;\n } else if (/^_/.test(reduceFunString)) {\n throw new Error(reduceFunString + ' is not a supported reduce function.');\n }\n}\n\nfunction mapper(mapFun, emit) {\n // for temp_views one can use emit(doc, emit), see #38\n if (typeof mapFun === \"function\" && mapFun.length === 2) {\n var origMap = mapFun;\n return function (doc) {\n return origMap(doc, emit);\n };\n } else {\n return evalFunctionWithEval(mapFun.toString(), emit);\n }\n}\n\nfunction reducer(reduceFun) {\n var reduceFunString = reduceFun.toString();\n var builtIn = getBuiltIn(reduceFunString);\n if (builtIn) {\n return builtIn;\n } else {\n return evalFunctionWithEval(reduceFunString);\n }\n}\n\nfunction ddocValidator(ddoc, viewName) {\n var fun = ddoc.views && ddoc.views[viewName];\n if (typeof fun.map !== 'string') {\n throw new NotFoundError('ddoc ' + ddoc._id + ' has no string view named ' +\n viewName + ', instead found object of type: ' + typeof fun.map);\n }\n}\n\nvar localDocName = 'mrviews';\nvar abstract = createAbstractMapReduce(localDocName, mapper, reducer, ddocValidator);\n\nfunction query(fun, opts, callback) {\n return abstract.query.call(this, fun, opts, callback);\n}\n\nfunction viewCleanup(callback) {\n return abstract.viewCleanup.call(this, callback);\n}\n\nvar mapreduce = {\n query: query,\n viewCleanup: viewCleanup\n};\n\nfunction isGenOne$1(rev$$1) {\n return /^1-/.test(rev$$1);\n}\n\nfunction fileHasChanged(localDoc, remoteDoc, filename) {\n return !localDoc._attachments ||\n !localDoc._attachments[filename] ||\n localDoc._attachments[filename].digest !== remoteDoc._attachments[filename].digest;\n}\n\nfunction getDocAttachments(db, doc) {\n var filenames = Object.keys(doc._attachments);\n return Promise.all(filenames.map(function (filename) {\n return db.getAttachment(doc._id, filename, {rev: doc._rev});\n }));\n}\n\nfunction getDocAttachmentsFromTargetOrSource(target, src, doc) {\n var doCheckForLocalAttachments = isRemote(src) && !isRemote(target);\n var filenames = Object.keys(doc._attachments);\n\n if (!doCheckForLocalAttachments) {\n return getDocAttachments(src, doc);\n }\n\n return target.get(doc._id).then(function (localDoc) {\n return Promise.all(filenames.map(function (filename) {\n if (fileHasChanged(localDoc, doc, filename)) {\n return src.getAttachment(doc._id, filename);\n }\n\n return target.getAttachment(localDoc._id, filename);\n }));\n }).catch(function (error) {\n /* istanbul ignore if */\n if (error.status !== 404) {\n throw error;\n }\n\n return getDocAttachments(src, doc);\n });\n}\n\nfunction createBulkGetOpts(diffs) {\n var requests = [];\n Object.keys(diffs).forEach(function (id) {\n var missingRevs = diffs[id].missing;\n missingRevs.forEach(function (missingRev) {\n requests.push({\n id: id,\n rev: missingRev\n });\n });\n });\n\n return {\n docs: requests,\n revs: true,\n latest: true\n };\n}\n\n//\n// Fetch all the documents from the src as described in the \"diffs\",\n// which is a mapping of docs IDs to revisions. If the state ever\n// changes to \"cancelled\", then the returned promise will be rejected.\n// Else it will be resolved with a list of fetched documents.\n//\nfunction getDocs(src, target, diffs, state) {\n diffs = clone(diffs); // we do not need to modify this\n\n var resultDocs = [],\n ok = true;\n\n function getAllDocs() {\n\n var bulkGetOpts = createBulkGetOpts(diffs);\n\n if (!bulkGetOpts.docs.length) { // optimization: skip empty requests\n return;\n }\n\n return src.bulkGet(bulkGetOpts).then(function (bulkGetResponse) {\n /* istanbul ignore if */\n if (state.cancelled) {\n throw new Error('cancelled');\n }\n return Promise.all(bulkGetResponse.results.map(function (bulkGetInfo) {\n return Promise.all(bulkGetInfo.docs.map(function (doc) {\n var remoteDoc = doc.ok;\n\n if (doc.error) {\n // when AUTO_COMPACTION is set, docs can be returned which look\n // like this: {\"missing\":\"1-7c3ac256b693c462af8442f992b83696\"}\n ok = false;\n }\n\n if (!remoteDoc || !remoteDoc._attachments) {\n return remoteDoc;\n }\n\n return getDocAttachmentsFromTargetOrSource(target, src, remoteDoc)\n .then(function (attachments) {\n var filenames = Object.keys(remoteDoc._attachments);\n attachments\n .forEach(function (attachment, i) {\n var att = remoteDoc._attachments[filenames[i]];\n delete att.stub;\n delete att.length;\n att.data = attachment;\n });\n\n return remoteDoc;\n });\n }));\n }))\n\n .then(function (results) {\n resultDocs = resultDocs.concat(flatten(results).filter(Boolean));\n });\n });\n }\n\n function hasAttachments(doc) {\n return doc._attachments && Object.keys(doc._attachments).length > 0;\n }\n\n function hasConflicts(doc) {\n return doc._conflicts && doc._conflicts.length > 0;\n }\n\n function fetchRevisionOneDocs(ids) {\n // Optimization: fetch gen-1 docs and attachments in\n // a single request using _all_docs\n return src.allDocs({\n keys: ids,\n include_docs: true,\n conflicts: true\n }).then(function (res) {\n if (state.cancelled) {\n throw new Error('cancelled');\n }\n res.rows.forEach(function (row) {\n if (row.deleted || !row.doc || !isGenOne$1(row.value.rev) ||\n hasAttachments(row.doc) || hasConflicts(row.doc)) {\n // if any of these conditions apply, we need to fetch using get()\n return;\n }\n\n // strip _conflicts array to appease CSG (#5793)\n /* istanbul ignore if */\n if (row.doc._conflicts) {\n delete row.doc._conflicts;\n }\n\n // the doc we got back from allDocs() is sufficient\n resultDocs.push(row.doc);\n delete diffs[row.id];\n });\n });\n }\n\n function getRevisionOneDocs() {\n // filter out the generation 1 docs and get them\n // leaving the non-generation one docs to be got otherwise\n var ids = Object.keys(diffs).filter(function (id) {\n var missing = diffs[id].missing;\n return missing.length === 1 && isGenOne$1(missing[0]);\n });\n if (ids.length > 0) {\n return fetchRevisionOneDocs(ids);\n }\n }\n\n function returnResult() {\n return { ok:ok, docs:resultDocs };\n }\n\n return Promise.resolve()\n .then(getRevisionOneDocs)\n .then(getAllDocs)\n .then(returnResult);\n}\n\nvar CHECKPOINT_VERSION = 1;\nvar REPLICATOR = \"pouchdb\";\n// This is an arbitrary number to limit the\n// amount of replication history we save in the checkpoint.\n// If we save too much, the checkpoing docs will become very big,\n// if we save fewer, we'll run a greater risk of having to\n// read all the changes from 0 when checkpoint PUTs fail\n// CouchDB 2.0 has a more involved history pruning,\n// but let's go for the simple version for now.\nvar CHECKPOINT_HISTORY_SIZE = 5;\nvar LOWEST_SEQ = 0;\n\nfunction updateCheckpoint(db, id, checkpoint, session, returnValue) {\n return db.get(id).catch(function (err) {\n if (err.status === 404) {\n if (db.adapter === 'http' || db.adapter === 'https') {\n explainError(\n 404, 'PouchDB is just checking if a remote checkpoint exists.'\n );\n }\n return {\n session_id: session,\n _id: id,\n history: [],\n replicator: REPLICATOR,\n version: CHECKPOINT_VERSION\n };\n }\n throw err;\n }).then(function (doc) {\n if (returnValue.cancelled) {\n return;\n }\n\n // if the checkpoint has not changed, do not update\n if (doc.last_seq === checkpoint) {\n return;\n }\n\n // Filter out current entry for this replication\n doc.history = (doc.history || []).filter(function (item) {\n return item.session_id !== session;\n });\n\n // Add the latest checkpoint to history\n doc.history.unshift({\n last_seq: checkpoint,\n session_id: session\n });\n\n // Just take the last pieces in history, to\n // avoid really big checkpoint docs.\n // see comment on history size above\n doc.history = doc.history.slice(0, CHECKPOINT_HISTORY_SIZE);\n\n doc.version = CHECKPOINT_VERSION;\n doc.replicator = REPLICATOR;\n\n doc.session_id = session;\n doc.last_seq = checkpoint;\n\n return db.put(doc).catch(function (err) {\n if (err.status === 409) {\n // retry; someone is trying to write a checkpoint simultaneously\n return updateCheckpoint(db, id, checkpoint, session, returnValue);\n }\n throw err;\n });\n });\n}\n\nfunction Checkpointer(src, target, id, returnValue, opts) {\n this.src = src;\n this.target = target;\n this.id = id;\n this.returnValue = returnValue;\n this.opts = opts || {};\n}\n\nCheckpointer.prototype.writeCheckpoint = function (checkpoint, session) {\n var self = this;\n return this.updateTarget(checkpoint, session).then(function () {\n return self.updateSource(checkpoint, session);\n });\n};\n\nCheckpointer.prototype.updateTarget = function (checkpoint, session) {\n if (this.opts.writeTargetCheckpoint) {\n return updateCheckpoint(this.target, this.id, checkpoint,\n session, this.returnValue);\n } else {\n return Promise.resolve(true);\n }\n};\n\nCheckpointer.prototype.updateSource = function (checkpoint, session) {\n if (this.opts.writeSourceCheckpoint) {\n var self = this;\n return updateCheckpoint(this.src, this.id, checkpoint,\n session, this.returnValue)\n .catch(function (err) {\n if (isForbiddenError(err)) {\n self.opts.writeSourceCheckpoint = false;\n return true;\n }\n throw err;\n });\n } else {\n return Promise.resolve(true);\n }\n};\n\nvar comparisons = {\n \"undefined\": function (targetDoc, sourceDoc) {\n // This is the previous comparison function\n if (collate(targetDoc.last_seq, sourceDoc.last_seq) === 0) {\n return sourceDoc.last_seq;\n }\n /* istanbul ignore next */\n return 0;\n },\n \"1\": function (targetDoc, sourceDoc) {\n // This is the comparison function ported from CouchDB\n return compareReplicationLogs(sourceDoc, targetDoc).last_seq;\n }\n};\n\nCheckpointer.prototype.getCheckpoint = function () {\n var self = this;\n\n if (self.opts && self.opts.writeSourceCheckpoint && !self.opts.writeTargetCheckpoint) {\n return self.src.get(self.id).then(function (sourceDoc) {\n return sourceDoc.last_seq || LOWEST_SEQ;\n }).catch(function (err) {\n /* istanbul ignore if */\n if (err.status !== 404) {\n throw err;\n }\n return LOWEST_SEQ;\n });\n }\n\n return self.target.get(self.id).then(function (targetDoc) {\n if (self.opts && self.opts.writeTargetCheckpoint && !self.opts.writeSourceCheckpoint) {\n return targetDoc.last_seq || LOWEST_SEQ;\n }\n\n return self.src.get(self.id).then(function (sourceDoc) {\n // Since we can't migrate an old version doc to a new one\n // (no session id), we just go with the lowest seq in this case\n /* istanbul ignore if */\n if (targetDoc.version !== sourceDoc.version) {\n return LOWEST_SEQ;\n }\n\n var version;\n if (targetDoc.version) {\n version = targetDoc.version.toString();\n } else {\n version = \"undefined\";\n }\n\n if (version in comparisons) {\n return comparisons[version](targetDoc, sourceDoc);\n }\n /* istanbul ignore next */\n return LOWEST_SEQ;\n }, function (err) {\n if (err.status === 404 && targetDoc.last_seq) {\n return self.src.put({\n _id: self.id,\n last_seq: LOWEST_SEQ\n }).then(function () {\n return LOWEST_SEQ;\n }, function (err) {\n if (isForbiddenError(err)) {\n self.opts.writeSourceCheckpoint = false;\n return targetDoc.last_seq;\n }\n /* istanbul ignore next */\n return LOWEST_SEQ;\n });\n }\n throw err;\n });\n }).catch(function (err) {\n if (err.status !== 404) {\n throw err;\n }\n return LOWEST_SEQ;\n });\n};\n// This checkpoint comparison is ported from CouchDBs source\n// they come from here:\n// https://github.com/apache/couchdb-couch-replicator/blob/master/src/couch_replicator.erl#L863-L906\n\nfunction compareReplicationLogs(srcDoc, tgtDoc) {\n if (srcDoc.session_id === tgtDoc.session_id) {\n return {\n last_seq: srcDoc.last_seq,\n history: srcDoc.history\n };\n }\n\n return compareReplicationHistory(srcDoc.history, tgtDoc.history);\n}\n\nfunction compareReplicationHistory(sourceHistory, targetHistory) {\n // the erlang loop via function arguments is not so easy to repeat in JS\n // therefore, doing this as recursion\n var S = sourceHistory[0];\n var sourceRest = sourceHistory.slice(1);\n var T = targetHistory[0];\n var targetRest = targetHistory.slice(1);\n\n if (!S || targetHistory.length === 0) {\n return {\n last_seq: LOWEST_SEQ,\n history: []\n };\n }\n\n var sourceId = S.session_id;\n /* istanbul ignore if */\n if (hasSessionId(sourceId, targetHistory)) {\n return {\n last_seq: S.last_seq,\n history: sourceHistory\n };\n }\n\n var targetId = T.session_id;\n if (hasSessionId(targetId, sourceRest)) {\n return {\n last_seq: T.last_seq,\n history: targetRest\n };\n }\n\n return compareReplicationHistory(sourceRest, targetRest);\n}\n\nfunction hasSessionId(sessionId, history) {\n var props = history[0];\n var rest = history.slice(1);\n\n if (!sessionId || history.length === 0) {\n return false;\n }\n\n if (sessionId === props.session_id) {\n return true;\n }\n\n return hasSessionId(sessionId, rest);\n}\n\nfunction isForbiddenError(err) {\n return typeof err.status === 'number' && Math.floor(err.status / 100) === 4;\n}\n\nvar STARTING_BACK_OFF = 0;\n\nfunction backOff(opts, returnValue, error, callback) {\n if (opts.retry === false) {\n returnValue.emit('error', error);\n returnValue.removeAllListeners();\n return;\n }\n /* istanbul ignore if */\n if (typeof opts.back_off_function !== 'function') {\n opts.back_off_function = defaultBackOff;\n }\n returnValue.emit('requestError', error);\n if (returnValue.state === 'active' || returnValue.state === 'pending') {\n returnValue.emit('paused', error);\n returnValue.state = 'stopped';\n var backOffSet = function backoffTimeSet() {\n opts.current_back_off = STARTING_BACK_OFF;\n };\n var removeBackOffSetter = function removeBackOffTimeSet() {\n returnValue.removeListener('active', backOffSet);\n };\n returnValue.once('paused', removeBackOffSetter);\n returnValue.once('active', backOffSet);\n }\n\n opts.current_back_off = opts.current_back_off || STARTING_BACK_OFF;\n opts.current_back_off = opts.back_off_function(opts.current_back_off);\n setTimeout(callback, opts.current_back_off);\n}\n\nfunction sortObjectPropertiesByKey(queryParams) {\n return Object.keys(queryParams).sort(collate).reduce(function (result, key) {\n result[key] = queryParams[key];\n return result;\n }, {});\n}\n\n// Generate a unique id particular to this replication.\n// Not guaranteed to align perfectly with CouchDB's rep ids.\nfunction generateReplicationId(src, target, opts) {\n var docIds = opts.doc_ids ? opts.doc_ids.sort(collate) : '';\n var filterFun = opts.filter ? opts.filter.toString() : '';\n var queryParams = '';\n var filterViewName = '';\n var selector = '';\n\n // possibility for checkpoints to be lost here as behaviour of\n // JSON.stringify is not stable (see #6226)\n /* istanbul ignore if */\n if (opts.selector) {\n selector = JSON.stringify(opts.selector);\n }\n\n if (opts.filter && opts.query_params) {\n queryParams = JSON.stringify(sortObjectPropertiesByKey(opts.query_params));\n }\n\n if (opts.filter && opts.filter === '_view') {\n filterViewName = opts.view.toString();\n }\n\n return Promise.all([src.id(), target.id()]).then(function (res) {\n var queryData = res[0] + res[1] + filterFun + filterViewName +\n queryParams + docIds + selector;\n return new Promise(function (resolve) {\n binaryMd5(queryData, resolve);\n });\n }).then(function (md5sum) {\n // can't use straight-up md5 alphabet, because\n // the char '/' is interpreted as being for attachments,\n // and + is also not url-safe\n md5sum = md5sum.replace(/\\//g, '.').replace(/\\+/g, '_');\n return '_local/' + md5sum;\n });\n}\n\nfunction replicate(src, target, opts, returnValue, result) {\n var batches = []; // list of batches to be processed\n var currentBatch; // the batch currently being processed\n var pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n }; // next batch, not yet ready to be processed\n var writingCheckpoint = false; // true while checkpoint is being written\n var changesCompleted = false; // true when all changes received\n var replicationCompleted = false; // true when replication has completed\n var last_seq = 0;\n var continuous = opts.continuous || opts.live || false;\n var batch_size = opts.batch_size || 100;\n var batches_limit = opts.batches_limit || 10;\n var changesPending = false; // true while src.changes is running\n var doc_ids = opts.doc_ids;\n var selector = opts.selector;\n var repId;\n var checkpointer;\n var changedDocs = [];\n // Like couchdb, every replication gets a unique session id\n var session = uuid();\n\n result = result || {\n ok: true,\n start_time: new Date().toISOString(),\n docs_read: 0,\n docs_written: 0,\n doc_write_failures: 0,\n errors: []\n };\n\n var changesOpts = {};\n returnValue.ready(src, target);\n\n function initCheckpointer() {\n if (checkpointer) {\n return Promise.resolve();\n }\n return generateReplicationId(src, target, opts).then(function (res) {\n repId = res;\n\n var checkpointOpts = {};\n if (opts.checkpoint === false) {\n checkpointOpts = { writeSourceCheckpoint: false, writeTargetCheckpoint: false };\n } else if (opts.checkpoint === 'source') {\n checkpointOpts = { writeSourceCheckpoint: true, writeTargetCheckpoint: false };\n } else if (opts.checkpoint === 'target') {\n checkpointOpts = { writeSourceCheckpoint: false, writeTargetCheckpoint: true };\n } else {\n checkpointOpts = { writeSourceCheckpoint: true, writeTargetCheckpoint: true };\n }\n\n checkpointer = new Checkpointer(src, target, repId, returnValue, checkpointOpts);\n });\n }\n\n function writeDocs() {\n changedDocs = [];\n\n if (currentBatch.docs.length === 0) {\n return;\n }\n var docs = currentBatch.docs;\n var bulkOpts = {timeout: opts.timeout};\n return target.bulkDocs({docs: docs, new_edits: false}, bulkOpts).then(function (res) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n\n // `res` doesn't include full documents (which live in `docs`), so we create a map of \n // (id -> error), and check for errors while iterating over `docs`\n var errorsById = Object.create(null);\n res.forEach(function (res) {\n if (res.error) {\n errorsById[res.id] = res;\n }\n });\n\n var errorsNo = Object.keys(errorsById).length;\n result.doc_write_failures += errorsNo;\n result.docs_written += docs.length - errorsNo;\n\n docs.forEach(function (doc) {\n var error = errorsById[doc._id];\n if (error) {\n result.errors.push(error);\n // Normalize error name. i.e. 'Unauthorized' -> 'unauthorized' (eg Sync Gateway)\n var errorName = (error.name || '').toLowerCase();\n if (errorName === 'unauthorized' || errorName === 'forbidden') {\n returnValue.emit('denied', clone(error));\n } else {\n throw error;\n }\n } else {\n changedDocs.push(doc);\n }\n });\n\n }, function (err) {\n result.doc_write_failures += docs.length;\n throw err;\n });\n }\n\n function finishBatch() {\n if (currentBatch.error) {\n throw new Error('There was a problem getting docs.');\n }\n result.last_seq = last_seq = currentBatch.seq;\n var outResult = clone(result);\n if (changedDocs.length) {\n outResult.docs = changedDocs;\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof currentBatch.pending === 'number') {\n outResult.pending = currentBatch.pending;\n delete currentBatch.pending;\n }\n returnValue.emit('change', outResult);\n }\n writingCheckpoint = true;\n return checkpointer.writeCheckpoint(currentBatch.seq,\n session).then(function () {\n writingCheckpoint = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n currentBatch = undefined;\n getChanges();\n }).catch(function (err) {\n onCheckpointError(err);\n throw err;\n });\n }\n\n function getDiffs() {\n var diff = {};\n currentBatch.changes.forEach(function (change) {\n // Couchbase Sync Gateway emits these, but we can ignore them\n /* istanbul ignore if */\n if (change.id === \"_user/\") {\n return;\n }\n diff[change.id] = change.changes.map(function (x) {\n return x.rev;\n });\n });\n return target.revsDiff(diff).then(function (diffs) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n throw new Error('cancelled');\n }\n // currentBatch.diffs elements are deleted as the documents are written\n currentBatch.diffs = diffs;\n });\n }\n\n function getBatchDocs() {\n return getDocs(src, target, currentBatch.diffs, returnValue).then(function (got) {\n currentBatch.error = !got.ok;\n got.docs.forEach(function (doc) {\n delete currentBatch.diffs[doc._id];\n result.docs_read++;\n currentBatch.docs.push(doc);\n });\n });\n }\n\n function startNextBatch() {\n if (returnValue.cancelled || currentBatch) {\n return;\n }\n if (batches.length === 0) {\n processPendingBatch(true);\n return;\n }\n currentBatch = batches.shift();\n getDiffs()\n .then(getBatchDocs)\n .then(writeDocs)\n .then(finishBatch)\n .then(startNextBatch)\n .catch(function (err) {\n abortReplication('batch processing terminated with error', err);\n });\n }\n\n\n function processPendingBatch(immediate$$1) {\n if (pendingBatch.changes.length === 0) {\n if (batches.length === 0 && !currentBatch) {\n if ((continuous && changesOpts.live) || changesCompleted) {\n returnValue.state = 'pending';\n returnValue.emit('paused');\n }\n if (changesCompleted) {\n completeReplication();\n }\n }\n return;\n }\n if (\n immediate$$1 ||\n changesCompleted ||\n pendingBatch.changes.length >= batch_size\n ) {\n batches.push(pendingBatch);\n pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n };\n if (returnValue.state === 'pending' || returnValue.state === 'stopped') {\n returnValue.state = 'active';\n returnValue.emit('active');\n }\n startNextBatch();\n }\n }\n\n\n function abortReplication(reason, err) {\n if (replicationCompleted) {\n return;\n }\n if (!err.message) {\n err.message = reason;\n }\n result.ok = false;\n result.status = 'aborting';\n batches = [];\n pendingBatch = {\n seq: 0,\n changes: [],\n docs: []\n };\n completeReplication(err);\n }\n\n\n function completeReplication(fatalError) {\n if (replicationCompleted) {\n return;\n }\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n result.status = 'cancelled';\n if (writingCheckpoint) {\n return;\n }\n }\n result.status = result.status || 'complete';\n result.end_time = new Date().toISOString();\n result.last_seq = last_seq;\n replicationCompleted = true;\n\n if (fatalError) {\n // need to extend the error because Firefox considers \".result\" read-only\n fatalError = createError(fatalError);\n fatalError.result = result;\n\n // Normalize error name. i.e. 'Unauthorized' -> 'unauthorized' (eg Sync Gateway)\n var errorName = (fatalError.name || '').toLowerCase();\n if (errorName === 'unauthorized' || errorName === 'forbidden') {\n returnValue.emit('error', fatalError);\n returnValue.removeAllListeners();\n } else {\n backOff(opts, returnValue, fatalError, function () {\n replicate(src, target, opts, returnValue);\n });\n }\n } else {\n returnValue.emit('complete', result);\n returnValue.removeAllListeners();\n }\n }\n\n\n function onChange(change, pending, lastSeq) {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n // Attach 'pending' property if server supports it (CouchDB 2.0+)\n /* istanbul ignore if */\n if (typeof pending === 'number') {\n pendingBatch.pending = pending;\n }\n\n var filter = filterChange(opts)(change);\n if (!filter) {\n return;\n }\n pendingBatch.seq = change.seq || lastSeq;\n pendingBatch.changes.push(change);\n immediate(function () {\n processPendingBatch(batches.length === 0 && changesOpts.live);\n });\n }\n\n\n function onChangesComplete(changes) {\n changesPending = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n\n // if no results were returned then we're done,\n // else fetch more\n if (changes.results.length > 0) {\n changesOpts.since = changes.results[changes.results.length - 1].seq;\n getChanges();\n processPendingBatch(true);\n } else {\n\n var complete = function () {\n if (continuous) {\n changesOpts.live = true;\n getChanges();\n } else {\n changesCompleted = true;\n }\n processPendingBatch(true);\n };\n\n // update the checkpoint so we start from the right seq next time\n if (!currentBatch && changes.results.length === 0) {\n writingCheckpoint = true;\n checkpointer.writeCheckpoint(changes.last_seq,\n session).then(function () {\n writingCheckpoint = false;\n result.last_seq = last_seq = changes.last_seq;\n complete();\n })\n .catch(onCheckpointError);\n } else {\n complete();\n }\n }\n }\n\n\n function onChangesError(err) {\n changesPending = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n return completeReplication();\n }\n abortReplication('changes rejected', err);\n }\n\n\n function getChanges() {\n if (!(\n !changesPending &&\n !changesCompleted &&\n batches.length < batches_limit\n )) {\n return;\n }\n changesPending = true;\n function abortChanges() {\n changes.cancel();\n }\n function removeListener() {\n returnValue.removeListener('cancel', abortChanges);\n }\n\n if (returnValue._changes) { // remove old changes() and listeners\n returnValue.removeListener('cancel', returnValue._abortChanges);\n returnValue._changes.cancel();\n }\n returnValue.once('cancel', abortChanges);\n\n var changes = src.changes(changesOpts)\n .on('change', onChange);\n changes.then(removeListener, removeListener);\n changes.then(onChangesComplete)\n .catch(onChangesError);\n\n if (opts.retry) {\n // save for later so we can cancel if necessary\n returnValue._changes = changes;\n returnValue._abortChanges = abortChanges;\n }\n }\n\n\n function startChanges() {\n initCheckpointer().then(function () {\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n return;\n }\n return checkpointer.getCheckpoint().then(function (checkpoint) {\n last_seq = checkpoint;\n changesOpts = {\n since: last_seq,\n limit: batch_size,\n batch_size: batch_size,\n style: 'all_docs',\n doc_ids: doc_ids,\n selector: selector,\n return_docs: true // required so we know when we're done\n };\n if (opts.filter) {\n if (typeof opts.filter !== 'string') {\n // required for the client-side filter in onChange\n changesOpts.include_docs = true;\n } else { // ddoc filter\n changesOpts.filter = opts.filter;\n }\n }\n if ('heartbeat' in opts) {\n changesOpts.heartbeat = opts.heartbeat;\n }\n if ('timeout' in opts) {\n changesOpts.timeout = opts.timeout;\n }\n if (opts.query_params) {\n changesOpts.query_params = opts.query_params;\n }\n if (opts.view) {\n changesOpts.view = opts.view;\n }\n getChanges();\n });\n }).catch(function (err) {\n abortReplication('getCheckpoint rejected with ', err);\n });\n }\n\n /* istanbul ignore next */\n function onCheckpointError(err) {\n writingCheckpoint = false;\n abortReplication('writeCheckpoint completed with error', err);\n }\n\n /* istanbul ignore if */\n if (returnValue.cancelled) { // cancelled immediately\n completeReplication();\n return;\n }\n\n if (!returnValue._addedListeners) {\n returnValue.once('cancel', completeReplication);\n\n if (typeof opts.complete === 'function') {\n returnValue.once('error', opts.complete);\n returnValue.once('complete', function (result) {\n opts.complete(null, result);\n });\n }\n returnValue._addedListeners = true;\n }\n\n if (typeof opts.since === 'undefined') {\n startChanges();\n } else {\n initCheckpointer().then(function () {\n writingCheckpoint = true;\n return checkpointer.writeCheckpoint(opts.since, session);\n }).then(function () {\n writingCheckpoint = false;\n /* istanbul ignore if */\n if (returnValue.cancelled) {\n completeReplication();\n return;\n }\n last_seq = opts.since;\n startChanges();\n }).catch(onCheckpointError);\n }\n}\n\n// We create a basic promise so the caller can cancel the replication possibly\n// before we have actually started listening to changes etc\ninherits(Replication, EE);\nfunction Replication() {\n EE.call(this);\n this.cancelled = false;\n this.state = 'pending';\n var self = this;\n var promise = new Promise(function (fulfill, reject) {\n self.once('complete', fulfill);\n self.once('error', reject);\n });\n self.then = function (resolve, reject) {\n return promise.then(resolve, reject);\n };\n self.catch = function (reject) {\n return promise.catch(reject);\n };\n // As we allow error handling via \"error\" event as well,\n // put a stub in here so that rejecting never throws UnhandledError.\n self.catch(function () {});\n}\n\nReplication.prototype.cancel = function () {\n this.cancelled = true;\n this.state = 'cancelled';\n this.emit('cancel');\n};\n\nReplication.prototype.ready = function (src, target) {\n var self = this;\n if (self._readyCalled) {\n return;\n }\n self._readyCalled = true;\n\n function onDestroy() {\n self.cancel();\n }\n src.once('destroyed', onDestroy);\n target.once('destroyed', onDestroy);\n function cleanup() {\n src.removeListener('destroyed', onDestroy);\n target.removeListener('destroyed', onDestroy);\n }\n self.once('complete', cleanup);\n};\n\nfunction toPouch(db, opts) {\n var PouchConstructor = opts.PouchConstructor;\n if (typeof db === 'string') {\n return new PouchConstructor(db, opts);\n } else {\n return db;\n }\n}\n\nfunction replicateWrapper(src, target, opts, callback) {\n\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (typeof opts === 'undefined') {\n opts = {};\n }\n\n if (opts.doc_ids && !Array.isArray(opts.doc_ids)) {\n throw createError(BAD_REQUEST,\n \"`doc_ids` filter parameter is not a list.\");\n }\n\n opts.complete = callback;\n opts = clone(opts);\n opts.continuous = opts.continuous || opts.live;\n opts.retry = ('retry' in opts) ? opts.retry : false;\n /*jshint validthis:true */\n opts.PouchConstructor = opts.PouchConstructor || this;\n var replicateRet = new Replication(opts);\n var srcPouch = toPouch(src, opts);\n var targetPouch = toPouch(target, opts);\n replicate(srcPouch, targetPouch, opts, replicateRet);\n return replicateRet;\n}\n\ninherits(Sync, EE);\nfunction sync(src, target, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n if (typeof opts === 'undefined') {\n opts = {};\n }\n opts = clone(opts);\n /*jshint validthis:true */\n opts.PouchConstructor = opts.PouchConstructor || this;\n src = toPouch(src, opts);\n target = toPouch(target, opts);\n return new Sync(src, target, opts, callback);\n}\n\nfunction Sync(src, target, opts, callback) {\n var self = this;\n this.canceled = false;\n\n var optsPush = opts.push ? $inject_Object_assign({}, opts, opts.push) : opts;\n var optsPull = opts.pull ? $inject_Object_assign({}, opts, opts.pull) : opts;\n\n this.push = replicateWrapper(src, target, optsPush);\n this.pull = replicateWrapper(target, src, optsPull);\n\n this.pushPaused = true;\n this.pullPaused = true;\n\n function pullChange(change) {\n self.emit('change', {\n direction: 'pull',\n change: change\n });\n }\n function pushChange(change) {\n self.emit('change', {\n direction: 'push',\n change: change\n });\n }\n function pushDenied(doc) {\n self.emit('denied', {\n direction: 'push',\n doc: doc\n });\n }\n function pullDenied(doc) {\n self.emit('denied', {\n direction: 'pull',\n doc: doc\n });\n }\n function pushPaused() {\n self.pushPaused = true;\n /* istanbul ignore if */\n if (self.pullPaused) {\n self.emit('paused');\n }\n }\n function pullPaused() {\n self.pullPaused = true;\n /* istanbul ignore if */\n if (self.pushPaused) {\n self.emit('paused');\n }\n }\n function pushActive() {\n self.pushPaused = false;\n /* istanbul ignore if */\n if (self.pullPaused) {\n self.emit('active', {\n direction: 'push'\n });\n }\n }\n function pullActive() {\n self.pullPaused = false;\n /* istanbul ignore if */\n if (self.pushPaused) {\n self.emit('active', {\n direction: 'pull'\n });\n }\n }\n\n var removed = {};\n\n function removeAll(type) { // type is 'push' or 'pull'\n return function (event, func) {\n var isChange = event === 'change' &&\n (func === pullChange || func === pushChange);\n var isDenied = event === 'denied' &&\n (func === pullDenied || func === pushDenied);\n var isPaused = event === 'paused' &&\n (func === pullPaused || func === pushPaused);\n var isActive = event === 'active' &&\n (func === pullActive || func === pushActive);\n\n if (isChange || isDenied || isPaused || isActive) {\n if (!(event in removed)) {\n removed[event] = {};\n }\n removed[event][type] = true;\n if (Object.keys(removed[event]).length === 2) {\n // both push and pull have asked to be removed\n self.removeAllListeners(event);\n }\n }\n };\n }\n\n if (opts.live) {\n this.push.on('complete', self.pull.cancel.bind(self.pull));\n this.pull.on('complete', self.push.cancel.bind(self.push));\n }\n\n function addOneListener(ee, event, listener) {\n if (ee.listeners(event).indexOf(listener) == -1) {\n ee.on(event, listener);\n }\n }\n\n this.on('newListener', function (event) {\n if (event === 'change') {\n addOneListener(self.pull, 'change', pullChange);\n addOneListener(self.push, 'change', pushChange);\n } else if (event === 'denied') {\n addOneListener(self.pull, 'denied', pullDenied);\n addOneListener(self.push, 'denied', pushDenied);\n } else if (event === 'active') {\n addOneListener(self.pull, 'active', pullActive);\n addOneListener(self.push, 'active', pushActive);\n } else if (event === 'paused') {\n addOneListener(self.pull, 'paused', pullPaused);\n addOneListener(self.push, 'paused', pushPaused);\n }\n });\n\n this.on('removeListener', function (event) {\n if (event === 'change') {\n self.pull.removeListener('change', pullChange);\n self.push.removeListener('change', pushChange);\n } else if (event === 'denied') {\n self.pull.removeListener('denied', pullDenied);\n self.push.removeListener('denied', pushDenied);\n } else if (event === 'active') {\n self.pull.removeListener('active', pullActive);\n self.push.removeListener('active', pushActive);\n } else if (event === 'paused') {\n self.pull.removeListener('paused', pullPaused);\n self.push.removeListener('paused', pushPaused);\n }\n });\n\n this.pull.on('removeListener', removeAll('pull'));\n this.push.on('removeListener', removeAll('push'));\n\n var promise = Promise.all([\n this.push,\n this.pull\n ]).then(function (resp) {\n var out = {\n push: resp[0],\n pull: resp[1]\n };\n self.emit('complete', out);\n if (callback) {\n callback(null, out);\n }\n self.removeAllListeners();\n return out;\n }, function (err) {\n self.cancel();\n if (callback) {\n // if there's a callback, then the callback can receive\n // the error event\n callback(err);\n } else {\n // if there's no callback, then we're safe to emit an error\n // event, which would otherwise throw an unhandled error\n // due to 'error' being a special event in EventEmitters\n self.emit('error', err);\n }\n self.removeAllListeners();\n if (callback) {\n // no sense throwing if we're already emitting an 'error' event\n throw err;\n }\n });\n\n this.then = function (success, err) {\n return promise.then(success, err);\n };\n\n this.catch = function (err) {\n return promise.catch(err);\n };\n}\n\nSync.prototype.cancel = function () {\n if (!this.canceled) {\n this.canceled = true;\n this.push.cancel();\n this.pull.cancel();\n }\n};\n\nfunction replication(PouchDB) {\n PouchDB.replicate = replicateWrapper;\n PouchDB.sync = sync;\n\n Object.defineProperty(PouchDB.prototype, 'replicate', {\n get: function () {\n var self = this;\n if (typeof this.replicateMethods === 'undefined') {\n this.replicateMethods = {\n from: function (other, opts, callback) {\n return self.constructor.replicate(other, self, opts, callback);\n },\n to: function (other, opts, callback) {\n return self.constructor.replicate(self, other, opts, callback);\n }\n };\n }\n return this.replicateMethods;\n }\n });\n\n PouchDB.prototype.sync = function (dbName, opts, callback) {\n return this.constructor.sync(this, dbName, opts, callback);\n };\n}\n\nPouchDB.plugin(IDBPouch)\n .plugin(HttpPouch$1)\n .plugin(mapreduce)\n .plugin(replication);\n\n// Pull from src because pouchdb-node/pouchdb-browser themselves\n\nexport default PouchDB;\n","import React, { memo, useMemo, useCallback, useState, Fragment, useRef, useEffect } from 'react';\nimport { lineCurvePropType, blendModePropType, motionPropTypes, defsPropTypes, curveFromProp, useValueFormatter, useTheme, useMotionConfig, SmartMotion, getLabelGenerator, DotsItem, withContainer, useDimensions, CartesianMarkers, bindDefs, SvgWrapper, ResponsiveWrapper, getRelativeCursor, isCursorInRect } from '@nivo/core';\nimport { ordinalColorsPropType, useOrdinalColorScale, useInheritedColor } from '@nivo/colors';\nimport { axisPropType, Grid, Axes, renderGridLinesToCanvas, renderAxesToCanvas } from '@nivo/axes';\nimport { LegendPropShape, BoxLegendSvg, renderLegendToCanvas } from '@nivo/legends';\nimport { BasicTooltip, TableTooltip, crosshairPropTypes, useTooltip, Crosshair } from '@nivo/tooltip';\nimport { line, area } from 'd3-shape';\nimport { scalePropType, computeXYScalesForSeries } from '@nivo/scales';\nimport PropTypes from 'prop-types';\nimport { TransitionMotion, spring } from 'react-motion';\nimport { Mesh as Mesh$2, useVoronoiMesh, renderVoronoiToCanvas, renderVoronoiCellToCanvas } from '@nivo/voronoi';\n\nvar LinePointTooltip = function LinePointTooltip(_ref) {\n var point = _ref.point;\n return React.createElement(BasicTooltip, {\n id: React.createElement(\"span\", null, \"x: \", React.createElement(\"strong\", null, point.data.xFormatted), \", y:\", ' ', React.createElement(\"strong\", null, point.data.yFormatted)),\n enableChip: true,\n color: point.serieColor\n });\n};\nLinePointTooltip.propTypes = {\n point: PropTypes.object.isRequired\n};\nvar PointTooltip = memo(LinePointTooltip);\n\nvar Chip = function Chip(_ref) {\n var color = _ref.color;\n return React.createElement(\"span\", {\n style: {\n display: 'block',\n width: '12px',\n height: '12px',\n background: color\n }\n });\n};\nChip.propTypes = {\n color: PropTypes.string.isRequired\n};\nvar SliceTooltip = function SliceTooltip(_ref2) {\n var slice = _ref2.slice,\n axis = _ref2.axis;\n var otherAxis = axis === 'x' ? 'y' : 'x';\n return React.createElement(TableTooltip, {\n rows: slice.points.map(function (point) {\n return [React.createElement(Chip, {\n key: \"chip\",\n color: point.serieColor\n }), point.serieId, React.createElement(\"strong\", {\n key: \"value\"\n }, point.data[\"\".concat(otherAxis, \"Formatted\")])];\n })\n });\n};\nSliceTooltip.propTypes = {\n slice: PropTypes.object.isRequired,\n axis: PropTypes.oneOf(['x', 'y']).isRequired\n};\nvar SliceTooltip$1 = memo(SliceTooltip);\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nvar commonPropTypes = {\n data: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n data: PropTypes.arrayOf(PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)])\n })).isRequired\n })).isRequired,\n xScale: scalePropType.isRequired,\n xFormat: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n yScale: scalePropType.isRequired,\n yFormat: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n layers: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.oneOf(['grid', 'markers', 'axes', 'areas', 'crosshair', 'lines', 'slices', 'points', 'mesh', 'legends']), PropTypes.func])).isRequired,\n curve: lineCurvePropType.isRequired,\n axisTop: axisPropType,\n axisRight: axisPropType,\n axisBottom: axisPropType,\n axisLeft: axisPropType,\n enableGridX: PropTypes.bool.isRequired,\n enableGridY: PropTypes.bool.isRequired,\n gridXValues: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]))]),\n gridYValues: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]))]),\n enablePoints: PropTypes.bool.isRequired,\n pointSymbol: PropTypes.func,\n pointSize: PropTypes.number.isRequired,\n pointColor: PropTypes.any.isRequired,\n pointBorderWidth: PropTypes.number.isRequired,\n pointBorderColor: PropTypes.any.isRequired,\n markers: PropTypes.arrayOf(PropTypes.shape({\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]).isRequired,\n style: PropTypes.object\n })),\n colors: ordinalColorsPropType.isRequired,\n enableArea: PropTypes.bool.isRequired,\n areaOpacity: PropTypes.number.isRequired,\n areaBlendMode: blendModePropType.isRequired,\n areaBaselineValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]).isRequired,\n lineWidth: PropTypes.number.isRequired,\n legends: PropTypes.arrayOf(PropTypes.shape(LegendPropShape)).isRequired,\n isInteractive: PropTypes.bool.isRequired,\n debugMesh: PropTypes.bool.isRequired,\n tooltip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n tooltipFormat: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n enableSlices: PropTypes.oneOf(['x', 'y', false]).isRequired,\n debugSlices: PropTypes.bool.isRequired,\n sliceTooltip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n enableCrosshair: PropTypes.bool.isRequired,\n crosshairType: crosshairPropTypes.type.isRequired\n};\nvar LinePropTypes = _objectSpread({}, commonPropTypes, {\n enablePointLabel: PropTypes.bool.isRequired,\n useMesh: PropTypes.bool.isRequired\n}, motionPropTypes, defsPropTypes);\nvar LineCanvasPropTypes = _objectSpread({\n pixelRatio: PropTypes.number.isRequired\n}, commonPropTypes);\nvar commonDefaultProps = {\n curve: 'linear',\n xScale: {\n type: 'point'\n },\n yScale: {\n type: 'linear',\n min: 0,\n max: 'auto'\n },\n layers: ['grid', 'markers', 'axes', 'areas', 'crosshair', 'lines', 'points', 'slices', 'mesh', 'legends'],\n axisBottom: {},\n axisLeft: {},\n enableGridX: true,\n enableGridY: true,\n enablePoints: true,\n pointSize: 6,\n pointColor: {\n from: 'color'\n },\n pointBorderWidth: 0,\n pointBorderColor: {\n theme: 'background'\n },\n colors: {\n scheme: 'nivo'\n },\n enableArea: false,\n areaBaselineValue: 0,\n areaOpacity: 0.2,\n areaBlendMode: 'normal',\n lineWidth: 2,\n legends: [],\n isInteractive: true,\n tooltip: PointTooltip,\n enableSlices: false,\n debugSlices: false,\n sliceTooltip: SliceTooltip$1,\n debugMesh: false,\n enableCrosshair: true,\n crosshairType: 'bottom-left'\n};\nvar LineDefaultProps = _objectSpread({}, commonDefaultProps, {\n enablePointLabel: false,\n useMesh: false,\n animate: true,\n motionStiffness: 90,\n motionDamping: 15,\n defs: [],\n fill: []\n});\nvar LineCanvasDefaultProps = _objectSpread({}, commonDefaultProps, {\n pixelRatio: global.window && global.window.devicePixelRatio ? global.window.devicePixelRatio : 1\n});\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$1(target, key, source[key]); }); } return target; }\nfunction _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\nvar useLineGenerator = function useLineGenerator(_ref) {\n var curve = _ref.curve;\n return useMemo(function () {\n return line().defined(function (d) {\n return d.x !== null && d.y !== null;\n }).x(function (d) {\n return d.x;\n }).y(function (d) {\n return d.y;\n }).curve(curveFromProp(curve));\n }, [curve]);\n};\nvar useAreaGenerator = function useAreaGenerator(_ref2) {\n var curve = _ref2.curve,\n yScale = _ref2.yScale,\n areaBaselineValue = _ref2.areaBaselineValue;\n return useMemo(function () {\n return area().defined(function (d) {\n return d.x !== null && d.y !== null;\n }).x(function (d) {\n return d.x;\n }).y1(function (d) {\n return d.y;\n }).curve(curveFromProp(curve)).y0(yScale(areaBaselineValue));\n }, [curve, yScale, areaBaselineValue]);\n};\nvar usePoints = function usePoints(_ref3) {\n var series = _ref3.series,\n getPointColor = _ref3.getPointColor,\n getPointBorderColor = _ref3.getPointBorderColor,\n formatX = _ref3.formatX,\n formatY = _ref3.formatY;\n return useMemo(function () {\n return series.reduce(function (acc, serie) {\n return [].concat(_toConsumableArray(acc), _toConsumableArray(serie.data.filter(function (datum) {\n return datum.position.x !== null && datum.position.y !== null;\n }).map(function (datum, i) {\n var point = {\n id: \"\".concat(serie.id, \".\").concat(i),\n index: acc.length + i,\n serieId: serie.id,\n serieColor: serie.color,\n x: datum.position.x,\n y: datum.position.y\n };\n point.color = getPointColor(serie);\n point.borderColor = getPointBorderColor(point);\n point.data = _objectSpread$1({}, datum.data, {\n xFormatted: formatX(datum.data.x),\n yFormatted: formatY(datum.data.y)\n });\n return point;\n })));\n }, []);\n }, [series, getPointColor, getPointBorderColor, formatX, formatY]);\n};\nvar useSlices = function useSlices(_ref4) {\n var enableSlices = _ref4.enableSlices,\n points = _ref4.points,\n width = _ref4.width,\n height = _ref4.height;\n return useMemo(function () {\n if (enableSlices === false) return [];\n if (enableSlices === 'x') {\n var map = new Map();\n points.forEach(function (point) {\n if (point.data.x === null || point.data.y === null) return;\n if (!map.has(point.x)) map.set(point.x, [point]);else map.get(point.x).push(point);\n });\n return Array.from(map.entries()).sort(function (a, b) {\n return a[0] - b[0];\n }).map(function (_ref5, i, slices) {\n var _ref6 = _slicedToArray(_ref5, 2),\n x = _ref6[0],\n slicePoints = _ref6[1];\n var prevSlice = slices[i - 1];\n var nextSlice = slices[i + 1];\n var x0;\n if (!prevSlice) x0 = x;else x0 = x - (x - prevSlice[0]) / 2;\n var sliceWidth;\n if (!nextSlice) sliceWidth = width - x0;else sliceWidth = x - x0 + (nextSlice[0] - x) / 2;\n return {\n id: x,\n x0: x0,\n x: x,\n y0: 0,\n y: 0,\n width: sliceWidth,\n height: height,\n points: slicePoints.reverse()\n };\n });\n } else if (enableSlices === 'y') {\n var _map = new Map();\n points.forEach(function (point) {\n if (point.data.x === null || point.data.y === null) return;\n if (!_map.has(point.y)) _map.set(point.y, [point]);else _map.get(point.y).push(point);\n });\n return Array.from(_map.entries()).sort(function (a, b) {\n return a[0] - b[0];\n }).map(function (_ref7, i, slices) {\n var _ref8 = _slicedToArray(_ref7, 2),\n y = _ref8[0],\n slicePoints = _ref8[1];\n var prevSlice = slices[i - 1];\n var nextSlice = slices[i + 1];\n var y0;\n if (!prevSlice) y0 = y;else y0 = y - (y - prevSlice[0]) / 2;\n var sliceHeight;\n if (!nextSlice) sliceHeight = height - y0;else sliceHeight = y - y0 + (nextSlice[0] - y) / 2;\n return {\n id: y,\n x0: 0,\n x: 0,\n y0: y0,\n y: y,\n width: width,\n height: sliceHeight,\n points: slicePoints.reverse()\n };\n });\n }\n }, [enableSlices, points]);\n};\nvar useLine = function useLine(_ref9) {\n var data = _ref9.data,\n _ref9$xScale = _ref9.xScale,\n xScaleSpec = _ref9$xScale === void 0 ? LineDefaultProps.xScale : _ref9$xScale,\n xFormat = _ref9.xFormat,\n _ref9$yScale = _ref9.yScale,\n yScaleSpec = _ref9$yScale === void 0 ? LineDefaultProps.yScale : _ref9$yScale,\n yFormat = _ref9.yFormat,\n width = _ref9.width,\n height = _ref9.height,\n _ref9$colors = _ref9.colors,\n colors = _ref9$colors === void 0 ? LineDefaultProps.colors : _ref9$colors,\n _ref9$curve = _ref9.curve,\n curve = _ref9$curve === void 0 ? LineDefaultProps.curve : _ref9$curve,\n _ref9$areaBaselineVal = _ref9.areaBaselineValue,\n areaBaselineValue = _ref9$areaBaselineVal === void 0 ? LineDefaultProps.areaBaselineValue : _ref9$areaBaselineVal,\n _ref9$pointColor = _ref9.pointColor,\n pointColor = _ref9$pointColor === void 0 ? LineDefaultProps.pointColor : _ref9$pointColor,\n _ref9$pointBorderColo = _ref9.pointBorderColor,\n pointBorderColor = _ref9$pointBorderColo === void 0 ? LineDefaultProps.pointBorderColor : _ref9$pointBorderColo,\n _ref9$enableSlices = _ref9.enableSlices,\n enableSlices = _ref9$enableSlices === void 0 ? LineDefaultProps.enableSlicesTooltip : _ref9$enableSlices;\n var formatX = useValueFormatter(xFormat);\n var formatY = useValueFormatter(yFormat);\n var getColor = useOrdinalColorScale(colors, 'id');\n var theme = useTheme();\n var getPointColor = useInheritedColor(pointColor, theme);\n var getPointBorderColor = useInheritedColor(pointBorderColor, theme);\n var _useMemo = useMemo(function () {\n return computeXYScalesForSeries(data, xScaleSpec, yScaleSpec, width, height);\n }, [data, xScaleSpec, yScaleSpec, width, height]),\n xScale = _useMemo.xScale,\n yScale = _useMemo.yScale,\n rawSeries = _useMemo.series;\n var series = useMemo(function () {\n return rawSeries.map(function (serie) {\n return _objectSpread$1({}, serie, {\n color: getColor(serie)\n });\n });\n }, [rawSeries, getColor]);\n var points = usePoints({\n series: series,\n getPointColor: getPointColor,\n getPointBorderColor: getPointBorderColor,\n formatX: formatX,\n formatY: formatY\n });\n var slices = useSlices({\n enableSlices: enableSlices,\n points: points,\n width: width,\n height: height\n });\n var lineGenerator = useLineGenerator({\n curve: curve\n });\n var areaGenerator = useAreaGenerator({\n curve: curve,\n yScale: yScale,\n areaBaselineValue: areaBaselineValue\n });\n return {\n lineGenerator: lineGenerator,\n areaGenerator: areaGenerator,\n getColor: getColor,\n series: series,\n xScale: xScale,\n yScale: yScale,\n slices: slices,\n points: points\n };\n};\n\nvar Areas = function Areas(_ref) {\n var areaGenerator = _ref.areaGenerator,\n areaOpacity = _ref.areaOpacity,\n areaBlendMode = _ref.areaBlendMode,\n lines = _ref.lines;\n var _useMotionConfig = useMotionConfig(),\n animate = _useMotionConfig.animate,\n springConfig = _useMotionConfig.springConfig;\n if (animate !== true) {\n return React.createElement(\"g\", null, lines.slice(0).reverse().map(function (_ref2) {\n var id = _ref2.id,\n data = _ref2.data,\n areaColor = _ref2.color,\n fill = _ref2.fill;\n return React.createElement(\"path\", {\n key: id,\n d: areaGenerator(data.map(function (d) {\n return d.position;\n })),\n fill: fill ? fill : areaColor,\n fillOpacity: areaOpacity,\n strokeWidth: 0,\n style: {\n mixBlendMode: areaBlendMode\n }\n });\n }));\n }\n return React.createElement(\"g\", null, lines.slice(0).reverse().map(function (_ref3) {\n var id = _ref3.id,\n data = _ref3.data,\n areaColor = _ref3.color,\n fill = _ref3.fill;\n return React.createElement(SmartMotion, {\n key: id,\n style: function style(spring) {\n return {\n d: spring(areaGenerator(data.map(function (d) {\n return d.position;\n })), springConfig),\n fill: spring(areaColor, springConfig)\n };\n }\n }, function (style) {\n return React.createElement(\"path\", {\n key: id,\n d: style.d,\n fill: fill ? fill : areaColor,\n fillOpacity: areaOpacity,\n strokeWidth: 0,\n style: {\n mixBlendMode: areaBlendMode\n }\n });\n });\n }));\n};\nAreas.propTypes = {\n areaGenerator: PropTypes.func.isRequired,\n areaOpacity: PropTypes.number.isRequired,\n areaBlendMode: blendModePropType.isRequired,\n lines: PropTypes.arrayOf(PropTypes.object).isRequired\n};\nvar Areas$1 = memo(Areas);\n\nvar LinesItem = function LinesItem(_ref) {\n var lineGenerator = _ref.lineGenerator,\n id = _ref.id,\n points = _ref.points,\n color = _ref.color,\n thickness = _ref.thickness;\n var _useMotionConfig = useMotionConfig(),\n animate = _useMotionConfig.animate,\n springConfig = _useMotionConfig.springConfig;\n if (animate !== true) {\n return React.createElement(\"path\", {\n key: id,\n d: lineGenerator(points),\n fill: \"none\",\n strokeWidth: thickness,\n stroke: color\n });\n }\n return React.createElement(SmartMotion, {\n key: id,\n style: function style(spring) {\n return {\n d: spring(lineGenerator(points), springConfig),\n stroke: spring(color, springConfig)\n };\n }\n }, function (style) {\n return React.createElement(\"path\", {\n key: id,\n d: style.d,\n fill: \"none\",\n strokeWidth: thickness,\n stroke: style.stroke\n });\n });\n};\nLinesItem.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n points: PropTypes.arrayOf(PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n y: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n })),\n lineGenerator: PropTypes.func.isRequired,\n color: PropTypes.string.isRequired,\n thickness: PropTypes.number.isRequired\n};\nvar LinesItem$1 = memo(LinesItem);\n\nvar Lines = function Lines(_ref) {\n var lines = _ref.lines,\n lineGenerator = _ref.lineGenerator,\n lineWidth = _ref.lineWidth;\n return lines.map(function (_ref2) {\n var id = _ref2.id,\n data = _ref2.data,\n color = _ref2.color;\n return React.createElement(LinesItem$1, {\n key: id,\n id: id,\n points: data.map(function (d) {\n return d.position;\n }),\n lineGenerator: lineGenerator,\n color: color,\n thickness: lineWidth\n });\n });\n};\nLines.propTypes = {\n lines: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n color: PropTypes.string.isRequired,\n data: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.instanceOf(Date)]),\n y: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.instanceOf(Date)])\n }).isRequired,\n position: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }).isRequired\n })).isRequired\n })).isRequired,\n lineWidth: PropTypes.number.isRequired,\n lineGenerator: PropTypes.func.isRequired\n};\nvar Lines$1 = memo(Lines);\n\nvar SlicesItem = function SlicesItem(_ref) {\n var slice = _ref.slice,\n axis = _ref.axis,\n debug = _ref.debug,\n tooltip = _ref.tooltip,\n isCurrent = _ref.isCurrent,\n setCurrent = _ref.setCurrent;\n var _useTooltip = useTooltip(),\n showTooltipFromEvent = _useTooltip.showTooltipFromEvent,\n hideTooltip = _useTooltip.hideTooltip;\n var handleMouseEnter = useCallback(function (event) {\n showTooltipFromEvent(React.createElement(tooltip, {\n slice: slice,\n axis: axis\n }), event, 'right');\n setCurrent(slice);\n }, [showTooltipFromEvent, tooltip, slice]);\n var handleMouseMove = useCallback(function (event) {\n showTooltipFromEvent(React.createElement(tooltip, {\n slice: slice,\n axis: axis\n }), event, 'right');\n }, [showTooltipFromEvent, tooltip, slice]);\n var handleMouseLeave = useCallback(function () {\n hideTooltip();\n setCurrent(null);\n }, [hideTooltip]);\n return React.createElement(\"rect\", {\n x: slice.x0,\n y: slice.y0,\n width: slice.width,\n height: slice.height,\n stroke: \"red\",\n strokeWidth: debug ? 1 : 0,\n strokeOpacity: 0.75,\n fill: \"red\",\n fillOpacity: isCurrent && debug ? 0.35 : 0,\n onMouseEnter: handleMouseEnter,\n onMouseMove: handleMouseMove,\n onMouseLeave: handleMouseLeave\n });\n};\nSlicesItem.propTypes = {\n slice: PropTypes.object.isRequired,\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n debug: PropTypes.bool.isRequired,\n height: PropTypes.number.isRequired,\n tooltip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n isCurrent: PropTypes.bool.isRequired,\n setCurrent: PropTypes.func.isRequired\n};\nvar SlicesItem$1 = memo(SlicesItem);\n\nvar Slices = function Slices(_ref) {\n var slices = _ref.slices,\n axis = _ref.axis,\n debug = _ref.debug,\n height = _ref.height,\n tooltip = _ref.tooltip,\n current = _ref.current,\n setCurrent = _ref.setCurrent;\n return slices.map(function (slice) {\n return React.createElement(SlicesItem$1, {\n key: slice.id,\n slice: slice,\n axis: axis,\n debug: debug,\n height: height,\n tooltip: tooltip,\n setCurrent: setCurrent,\n isCurrent: current !== null && current.id === slice.id\n });\n });\n};\nSlices.propTypes = {\n slices: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]).isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n points: PropTypes.arrayOf(PropTypes.object).isRequired\n })).isRequired,\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n debug: PropTypes.bool.isRequired,\n height: PropTypes.number.isRequired,\n tooltip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n current: PropTypes.object,\n setCurrent: PropTypes.func.isRequired\n};\nvar Slices$1 = memo(Slices);\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\nvar Points = function Points(_ref) {\n var points = _ref.points,\n symbol = _ref.symbol,\n size = _ref.size,\n borderWidth = _ref.borderWidth,\n enableLabel = _ref.enableLabel,\n label = _ref.label,\n labelYOffset = _ref.labelYOffset;\n var theme = useTheme();\n var _useMotionConfig = useMotionConfig(),\n animate = _useMotionConfig.animate,\n springConfig = _useMotionConfig.springConfig;\n var getLabel = getLabelGenerator(label);\n var mappedPoints = points.map(function (point) {\n var mappedPoint = {\n id: point.id,\n x: point.x,\n y: point.y,\n datum: point.data,\n fill: point.color,\n stroke: point.borderColor,\n label: enableLabel ? getLabel(point.data) : null\n };\n return mappedPoint;\n });\n if (animate !== true) {\n return React.createElement(\"g\", null, mappedPoints.map(function (point) {\n return React.createElement(DotsItem, {\n key: point.id,\n x: point.x,\n y: point.y,\n datum: point.datum,\n symbol: symbol,\n size: size,\n color: point.fill,\n borderWidth: borderWidth,\n borderColor: point.stroke,\n label: point.label,\n labelYOffset: labelYOffset,\n theme: theme\n });\n }));\n }\n return React.createElement(TransitionMotion, {\n styles: mappedPoints.map(function (point) {\n return {\n key: point.id,\n data: point,\n style: {\n x: spring(point.x, springConfig),\n y: spring(point.y, springConfig),\n size: spring(size, springConfig)\n }\n };\n })\n }, function (interpolatedStyles) {\n return React.createElement(\"g\", null, interpolatedStyles.map(function (_ref2) {\n var key = _ref2.key,\n style = _ref2.style,\n point = _ref2.data;\n return React.createElement(DotsItem, _extends({\n key: key\n }, style, {\n symbol: symbol,\n datum: point.datum,\n color: point.fill,\n borderWidth: borderWidth,\n borderColor: point.stroke,\n label: point.label,\n labelYOffset: labelYOffset,\n theme: theme\n }));\n }));\n });\n};\nPoints.propTypes = {\n points: PropTypes.arrayOf(PropTypes.object),\n symbol: PropTypes.func,\n size: PropTypes.number.isRequired,\n color: PropTypes.func.isRequired,\n borderWidth: PropTypes.number.isRequired,\n borderColor: PropTypes.func.isRequired,\n enableLabel: PropTypes.bool.isRequired,\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,\n labelYOffset: PropTypes.number\n};\nPoints.defaultProps = {\n enableLabel: false,\n label: 'yFormatted'\n};\nvar Points$1 = memo(Points);\n\nvar Mesh = function Mesh(_ref) {\n var points = _ref.points,\n width = _ref.width,\n height = _ref.height,\n margin = _ref.margin,\n setCurrent = _ref.setCurrent,\n onMouseEnter = _ref.onMouseEnter,\n onMouseMove = _ref.onMouseMove,\n onMouseLeave = _ref.onMouseLeave,\n onClick = _ref.onClick,\n tooltip = _ref.tooltip,\n debug = _ref.debug;\n var _useTooltip = useTooltip(),\n showTooltipAt = _useTooltip.showTooltipAt,\n hideTooltip = _useTooltip.hideTooltip;\n var handleMouseEnter = useCallback(function (point, event) {\n showTooltipAt(React.createElement(tooltip, {\n point: point\n }), [point.x + margin.left, point.y + margin.top], 'top');\n setCurrent(point);\n onMouseEnter && onMouseEnter(point, event);\n }, [setCurrent, showTooltipAt, tooltip, onMouseEnter, margin]);\n var handleMouseMove = useCallback(function (point, event) {\n showTooltipAt(React.createElement(tooltip, {\n point: point\n }), [point.x + margin.left, point.y + margin.top], 'top');\n setCurrent(point);\n onMouseMove && onMouseMove(point, event);\n }, [setCurrent, showTooltipAt, tooltip, onMouseMove]);\n var handleMouseLeave = useCallback(function (point, event) {\n hideTooltip();\n setCurrent(null);\n onMouseLeave && onMouseLeave(point, event);\n }, [hideTooltip, setCurrent, onMouseLeave]);\n var handleClick = useCallback(function (point, event) {\n onClick && onClick(point, event);\n }, [onClick]);\n return React.createElement(Mesh$2, {\n nodes: points,\n width: width,\n height: height,\n onMouseEnter: handleMouseEnter,\n onMouseMove: handleMouseMove,\n onMouseLeave: handleMouseLeave,\n onClick: handleClick,\n debug: debug\n });\n};\nMesh.propTypes = {\n points: PropTypes.arrayOf(PropTypes.object).isRequired,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n margin: PropTypes.object.isRequired,\n setCurrent: PropTypes.func.isRequired,\n onMouseEnter: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onClick: PropTypes.func,\n tooltip: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n debug: PropTypes.bool.isRequired\n};\nvar Mesh$1 = memo(Mesh);\n\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$2(target, key, source[key]); }); } return target; }\nfunction _defineProperty$2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends$1() { _extends$1 = 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; }; return _extends$1.apply(this, arguments); }\nfunction _slicedToArray$1(arr, i) { return _arrayWithHoles$1(arr) || _iterableToArrayLimit$1(arr, i) || _nonIterableRest$1(); }\nfunction _nonIterableRest$1() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit$1(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles$1(arr) { if (Array.isArray(arr)) return arr; }\nvar Line = function Line(props) {\n var data = props.data,\n xScaleSpec = props.xScale,\n xFormat = props.xFormat,\n yScaleSpec = props.yScale,\n yFormat = props.yFormat,\n layers = props.layers,\n curve = props.curve,\n areaBaselineValue = props.areaBaselineValue,\n colors = props.colors,\n partialMargin = props.margin,\n width = props.width,\n height = props.height,\n axisTop = props.axisTop,\n axisRight = props.axisRight,\n axisBottom = props.axisBottom,\n axisLeft = props.axisLeft,\n enableGridX = props.enableGridX,\n enableGridY = props.enableGridY,\n gridXValues = props.gridXValues,\n gridYValues = props.gridYValues,\n lineWidth = props.lineWidth,\n enableArea = props.enableArea,\n areaOpacity = props.areaOpacity,\n areaBlendMode = props.areaBlendMode,\n enablePoints = props.enablePoints,\n pointSymbol = props.pointSymbol,\n pointSize = props.pointSize,\n pointColor = props.pointColor,\n pointBorderWidth = props.pointBorderWidth,\n pointBorderColor = props.pointBorderColor,\n enablePointLabel = props.enablePointLabel,\n pointLabel = props.pointLabel,\n pointLabelFormat = props.pointLabelFormat,\n pointLabelYOffset = props.pointLabelYOffset,\n defs = props.defs,\n fill = props.fill,\n markers = props.markers,\n legends = props.legends,\n isInteractive = props.isInteractive,\n useMesh = props.useMesh,\n debugMesh = props.debugMesh,\n onMouseEnter = props.onMouseEnter,\n onMouseMove = props.onMouseMove,\n onMouseLeave = props.onMouseLeave,\n onClick = props.onClick,\n tooltip = props.tooltip,\n enableSlices = props.enableSlices,\n debugSlices = props.debugSlices,\n sliceTooltip = props.sliceTooltip,\n enableCrosshair = props.enableCrosshair,\n crosshairType = props.crosshairType;\n var _useDimensions = useDimensions(width, height, partialMargin),\n margin = _useDimensions.margin,\n innerWidth = _useDimensions.innerWidth,\n innerHeight = _useDimensions.innerHeight,\n outerWidth = _useDimensions.outerWidth,\n outerHeight = _useDimensions.outerHeight;\n var _useLine = useLine({\n data: data,\n xScale: xScaleSpec,\n xFormat: xFormat,\n yScale: yScaleSpec,\n yFormat: yFormat,\n width: innerWidth,\n height: innerHeight,\n colors: colors,\n curve: curve,\n areaBaselineValue: areaBaselineValue,\n pointColor: pointColor,\n pointBorderColor: pointBorderColor,\n enableSlices: enableSlices\n }),\n lineGenerator = _useLine.lineGenerator,\n areaGenerator = _useLine.areaGenerator,\n series = _useLine.series,\n xScale = _useLine.xScale,\n yScale = _useLine.yScale,\n slices = _useLine.slices,\n points = _useLine.points;\n var theme = useTheme();\n var getPointColor = useInheritedColor(pointColor, theme);\n var getPointBorderColor = useInheritedColor(pointBorderColor, theme);\n var _useState = useState(null),\n _useState2 = _slicedToArray$1(_useState, 2),\n currentPoint = _useState2[0],\n setCurrentPoint = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray$1(_useState3, 2),\n currentSlice = _useState4[0],\n setCurrentSlice = _useState4[1];\n var legendData = useMemo(function () {\n return series.map(function (line) {\n return {\n id: line.id,\n label: line.id,\n color: line.color\n };\n }).reverse();\n }, [series]);\n var layerById = {\n grid: React.createElement(Grid, {\n key: \"grid\",\n theme: theme,\n width: innerWidth,\n height: innerHeight,\n xScale: enableGridX ? xScale : null,\n yScale: enableGridY ? yScale : null,\n xValues: gridXValues,\n yValues: gridYValues\n }),\n markers: React.createElement(CartesianMarkers, {\n key: \"markers\",\n markers: markers,\n width: innerWidth,\n height: innerHeight,\n xScale: xScale,\n yScale: yScale,\n theme: theme\n }),\n axes: React.createElement(Axes, {\n key: \"axes\",\n xScale: xScale,\n yScale: yScale,\n width: innerWidth,\n height: innerHeight,\n theme: theme,\n top: axisTop,\n right: axisRight,\n bottom: axisBottom,\n left: axisLeft\n }),\n areas: null,\n lines: React.createElement(Lines$1, {\n key: \"lines\",\n lines: series,\n lineGenerator: lineGenerator,\n lineWidth: lineWidth\n }),\n slices: null,\n points: null,\n crosshair: null,\n mesh: null,\n legends: legends.map(function (legend, i) {\n return React.createElement(BoxLegendSvg, _extends$1({\n key: \"legend.\".concat(i)\n }, legend, {\n containerWidth: innerWidth,\n containerHeight: innerHeight,\n data: legend.data || legendData,\n theme: theme\n }));\n })\n };\n var boundDefs = bindDefs(defs, series, fill);\n if (enableArea) {\n layerById.areas = React.createElement(Areas$1, {\n key: \"areas\",\n areaGenerator: areaGenerator,\n areaOpacity: areaOpacity,\n areaBlendMode: areaBlendMode,\n lines: series\n });\n }\n if (isInteractive && enableSlices !== false) {\n layerById.slices = React.createElement(Slices$1, {\n key: \"slices\",\n slices: slices,\n axis: enableSlices,\n debug: debugSlices,\n height: innerHeight,\n tooltip: sliceTooltip,\n current: currentSlice,\n setCurrent: setCurrentSlice\n });\n }\n if (enablePoints) {\n layerById.points = React.createElement(Points$1, {\n key: \"points\",\n points: points,\n symbol: pointSymbol,\n size: pointSize,\n color: getPointColor,\n borderWidth: pointBorderWidth,\n borderColor: getPointBorderColor,\n enableLabel: enablePointLabel,\n label: pointLabel,\n labelFormat: pointLabelFormat,\n labelYOffset: pointLabelYOffset\n });\n }\n if (isInteractive && enableCrosshair) {\n if (currentPoint !== null) {\n layerById.crosshair = React.createElement(Crosshair, {\n key: \"crosshair\",\n width: innerWidth,\n height: innerHeight,\n x: currentPoint.x,\n y: currentPoint.y,\n type: crosshairType\n });\n }\n if (currentSlice !== null) {\n layerById.crosshair = React.createElement(Crosshair, {\n key: \"crosshair\",\n width: innerWidth,\n height: innerHeight,\n x: currentSlice.x,\n y: currentSlice.y,\n type: enableSlices\n });\n }\n }\n if (isInteractive && useMesh && enableSlices === false) {\n layerById.mesh = React.createElement(Mesh$1, {\n key: \"mesh\",\n points: points,\n width: innerWidth,\n height: innerHeight,\n margin: margin,\n current: currentPoint,\n setCurrent: setCurrentPoint,\n onMouseEnter: onMouseEnter,\n onMouseMove: onMouseMove,\n onMouseLeave: onMouseLeave,\n onClick: onClick,\n tooltip: tooltip,\n debug: debugMesh\n });\n }\n return React.createElement(SvgWrapper, {\n defs: boundDefs,\n width: outerWidth,\n height: outerHeight,\n margin: margin\n }, layers.map(function (layer, i) {\n if (typeof layer === 'function') {\n return React.createElement(Fragment, {\n key: i\n }, layer(_objectSpread$2({}, props, {\n innerWidth: innerWidth,\n innerHeight: innerHeight,\n series: series,\n slices: slices,\n points: points,\n xScale: xScale,\n yScale: yScale,\n lineGenerator: lineGenerator,\n areaGenerator: areaGenerator,\n currentPoint: currentPoint,\n setCurrentPoint: setCurrentPoint,\n currentSlice: currentSlice,\n setCurrentSlice: setCurrentSlice\n })));\n }\n return layerById[layer];\n }));\n};\nLine.propTypes = LinePropTypes;\nLine.defaultProps = LineDefaultProps;\nvar Line$1 = withContainer(Line);\n\nfunction _extends$2() { _extends$2 = 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; }; return _extends$2.apply(this, arguments); }\nvar ResponsiveLine = function ResponsiveLine(props) {\n return React.createElement(ResponsiveWrapper, null, function (_ref) {\n var width = _ref.width,\n height = _ref.height;\n return React.createElement(Line$1, _extends$2({\n width: width,\n height: height\n }, props));\n });\n};\n\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty$3(target, key, source[key]); }); } return target; }\nfunction _defineProperty$3(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _slicedToArray$2(arr, i) { return _arrayWithHoles$2(arr) || _iterableToArrayLimit$2(arr, i) || _nonIterableRest$2(); }\nfunction _nonIterableRest$2() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\nfunction _iterableToArrayLimit$2(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles$2(arr) { if (Array.isArray(arr)) return arr; }\nvar LineCanvas = function LineCanvas(_ref) {\n var width = _ref.width,\n height = _ref.height,\n partialMargin = _ref.margin,\n pixelRatio = _ref.pixelRatio,\n data = _ref.data,\n xScaleSpec = _ref.xScale,\n xFormat = _ref.xFormat,\n yScaleSpec = _ref.yScale,\n yFormat = _ref.yFormat,\n curve = _ref.curve,\n layers = _ref.layers,\n colors = _ref.colors,\n lineWidth = _ref.lineWidth,\n enableArea = _ref.enableArea,\n areaBaselineValue = _ref.areaBaselineValue,\n areaOpacity = _ref.areaOpacity,\n enablePoints = _ref.enablePoints,\n pointSize = _ref.pointSize,\n pointColor = _ref.pointColor,\n pointBorderWidth = _ref.pointBorderWidth,\n pointBorderColor = _ref.pointBorderColor,\n enableGridX = _ref.enableGridX,\n gridXValues = _ref.gridXValues,\n enableGridY = _ref.enableGridY,\n gridYValues = _ref.gridYValues,\n axisTop = _ref.axisTop,\n axisRight = _ref.axisRight,\n axisBottom = _ref.axisBottom,\n axisLeft = _ref.axisLeft,\n legends = _ref.legends,\n isInteractive = _ref.isInteractive,\n debugMesh = _ref.debugMesh,\n onMouseLeave = _ref.onMouseLeave,\n onClick = _ref.onClick,\n tooltip = _ref.tooltip;\n var canvasEl = useRef(null);\n var _useDimensions = useDimensions(width, height, partialMargin),\n margin = _useDimensions.margin,\n innerWidth = _useDimensions.innerWidth,\n innerHeight = _useDimensions.innerHeight,\n outerWidth = _useDimensions.outerWidth,\n outerHeight = _useDimensions.outerHeight;\n var theme = useTheme();\n var _useState = useState(null),\n _useState2 = _slicedToArray$2(_useState, 2),\n currentPoint = _useState2[0],\n setCurrentPoint = _useState2[1];\n var _useLine = useLine({\n data: data,\n xScale: xScaleSpec,\n xFormat: xFormat,\n yScale: yScaleSpec,\n yFormat: yFormat,\n width: innerWidth,\n height: innerHeight,\n colors: colors,\n curve: curve,\n areaBaselineValue: areaBaselineValue,\n pointColor: pointColor,\n pointBorderColor: pointBorderColor\n }),\n lineGenerator = _useLine.lineGenerator,\n areaGenerator = _useLine.areaGenerator,\n series = _useLine.series,\n xScale = _useLine.xScale,\n yScale = _useLine.yScale,\n points = _useLine.points;\n var _useVoronoiMesh = useVoronoiMesh({\n points: points,\n width: innerWidth,\n height: innerHeight,\n debug: debugMesh\n }),\n delaunay = _useVoronoiMesh.delaunay,\n voronoi = _useVoronoiMesh.voronoi;\n useEffect(function () {\n canvasEl.current.width = outerWidth * pixelRatio;\n canvasEl.current.height = outerHeight * pixelRatio;\n var ctx = canvasEl.current.getContext('2d');\n ctx.scale(pixelRatio, pixelRatio);\n ctx.fillStyle = theme.background;\n ctx.fillRect(0, 0, outerWidth, outerHeight);\n ctx.translate(margin.left, margin.top);\n layers.forEach(function (layer) {\n if (layer === 'grid' && theme.grid.line.strokeWidth > 0) {\n ctx.lineWidth = theme.grid.line.strokeWidth;\n ctx.strokeStyle = theme.grid.line.stroke;\n enableGridX && renderGridLinesToCanvas(ctx, {\n width: innerWidth,\n height: innerHeight,\n scale: xScale,\n axis: 'x',\n values: gridXValues\n });\n enableGridY && renderGridLinesToCanvas(ctx, {\n width: innerWidth,\n height: innerHeight,\n scale: yScale,\n axis: 'y',\n values: gridYValues\n });\n }\n if (layer === 'axes') {\n renderAxesToCanvas(ctx, {\n xScale: xScale,\n yScale: yScale,\n width: innerWidth,\n height: innerHeight,\n top: axisTop,\n right: axisRight,\n bottom: axisBottom,\n left: axisLeft,\n theme: theme\n });\n }\n if (layer === 'areas' && enableArea === true) {\n ctx.save();\n ctx.globalAlpha = areaOpacity;\n areaGenerator.context(ctx);\n series.forEach(function (serie) {\n ctx.fillStyle = serie.color;\n ctx.beginPath();\n areaGenerator(serie.data.map(function (d) {\n return d.position;\n }));\n ctx.fill();\n });\n ctx.restore();\n }\n if (layer === 'lines') {\n lineGenerator.context(ctx);\n series.forEach(function (serie) {\n ctx.strokeStyle = serie.color;\n ctx.lineWidth = lineWidth;\n ctx.beginPath();\n lineGenerator(serie.data.map(function (d) {\n return d.position;\n }));\n ctx.stroke();\n });\n }\n if (layer === 'points' && enablePoints === true && pointSize > 0) {\n points.forEach(function (point) {\n ctx.fillStyle = point.color;\n ctx.beginPath();\n ctx.arc(point.x, point.y, pointSize / 2, 0, 2 * Math.PI);\n ctx.fill();\n if (pointBorderWidth > 0) {\n ctx.strokeStyle = point.borderColor;\n ctx.lineWidth = pointBorderWidth;\n ctx.stroke();\n }\n });\n }\n if (layer === 'mesh' && debugMesh === true) {\n renderVoronoiToCanvas(ctx, voronoi);\n if (currentPoint) {\n renderVoronoiCellToCanvas(ctx, voronoi, currentPoint.index);\n }\n }\n if (layer === 'legends') {\n var legendData = series.map(function (serie) {\n return {\n id: serie.id,\n label: serie.id,\n color: serie.color\n };\n }).reverse();\n legends.forEach(function (legend) {\n renderLegendToCanvas(ctx, _objectSpread$3({}, legend, {\n data: legend.data || legendData,\n containerWidth: innerWidth,\n containerHeight: innerHeight,\n theme: theme\n }));\n });\n }\n });\n }, [canvasEl, outerWidth, outerHeight, layers, theme, lineGenerator, series, xScale, yScale, enableGridX, gridXValues, enableGridY, gridYValues, axisTop, axisRight, axisBottom, axisLeft, legends, points, enablePoints, pointSize, currentPoint]);\n var getPointFromMouseEvent = useCallback(function (event) {\n var _getRelativeCursor = getRelativeCursor(canvasEl.current, event),\n _getRelativeCursor2 = _slicedToArray$2(_getRelativeCursor, 2),\n x = _getRelativeCursor2[0],\n y = _getRelativeCursor2[1];\n if (!isCursorInRect(margin.left, margin.top, innerWidth, innerHeight, x, y)) return null;\n var pointIndex = delaunay.find(x - margin.left, y - margin.top);\n return points[pointIndex];\n }, [canvasEl, margin, innerWidth, innerHeight, delaunay]);\n var _useTooltip = useTooltip(),\n showTooltipFromEvent = _useTooltip.showTooltipFromEvent,\n hideTooltip = _useTooltip.hideTooltip;\n var handleMouseHover = useCallback(function (event) {\n var point = getPointFromMouseEvent(event);\n setCurrentPoint(point);\n if (point) {\n showTooltipFromEvent(React.createElement(tooltip, {\n point: point\n }), event);\n } else {\n hideTooltip();\n }\n }, [getPointFromMouseEvent, setCurrentPoint, showTooltipFromEvent, hideTooltip, tooltip]);\n var handleMouseLeave = useCallback(function (event) {\n hideTooltip();\n setCurrentPoint(null);\n currentPoint && onMouseLeave && onMouseLeave(currentPoint, event);\n }, [hideTooltip, setCurrentPoint, onMouseLeave]);\n var handleClick = useCallback(function (event) {\n if (onClick) {\n var point = getPointFromMouseEvent(event);\n point && onClick(point, event);\n }\n }, [getPointFromMouseEvent, onClick]);\n return React.createElement(\"canvas\", {\n ref: canvasEl,\n width: outerWidth * pixelRatio,\n height: outerHeight * pixelRatio,\n style: {\n width: outerWidth,\n height: outerHeight,\n cursor: isInteractive ? 'auto' : 'normal'\n },\n onMouseEnter: isInteractive ? handleMouseHover : undefined,\n onMouseMove: isInteractive ? handleMouseHover : undefined,\n onMouseLeave: isInteractive ? handleMouseLeave : undefined,\n onClick: isInteractive ? handleClick : undefined\n });\n};\nLineCanvas.propTypes = LineCanvasPropTypes;\nLineCanvas.defaultProps = LineCanvasDefaultProps;\nvar LineCanvas$1 = withContainer(LineCanvas);\n\nfunction _extends$3() { _extends$3 = 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; }; return _extends$3.apply(this, arguments); }\nvar ResponsiveLineCanvas = function ResponsiveLineCanvas(props) {\n return React.createElement(ResponsiveWrapper, null, function (_ref) {\n var width = _ref.width,\n height = _ref.height;\n return React.createElement(LineCanvas$1, _extends$3({\n width: width,\n height: height\n }, props));\n });\n};\n\nexport { Line$1 as Line, LineCanvas$1 as LineCanvas, LineCanvasDefaultProps, LineCanvasPropTypes, LineDefaultProps, LinePropTypes, ResponsiveLine, ResponsiveLineCanvas, useAreaGenerator, useLine, useLineGenerator, useSlices };\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _mapProps = _interopRequireDefault(require(\"./mapProps\"));\n\nvar withProps = function withProps(input) {\n var hoc = (0, _mapProps.default)(function (props) {\n return (0, _extends2.default)({}, props, typeof input === 'function' ? input(props) : input);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return function (BaseComponent) {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'withProps'))(hoc(BaseComponent));\n };\n }\n\n return hoc;\n};\n\nvar _default = withProps;\nexports.default = _default;","var baseRest = require('./_baseRest'),\n createWrap = require('./_createWrap'),\n getHolder = require('./_getHolder'),\n replaceHolders = require('./_replaceHolders');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_PARTIAL_RIGHT_FLAG = 64;\n\n/**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\nvar partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n});\n\n// Assign default placeholders.\npartialRight.placeholder = {};\n\nmodule.exports = partialRight;\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","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.floor(i), j = Math.ceil(j);\n if (u > 0) for (; i <= j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i <= j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n if (z.length * 2 < n) z = ticks(u, v, n);\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\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|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _shouldUpdate = _interopRequireDefault(require(\"./shouldUpdate\"));\n\nvar _shallowEqual = _interopRequireDefault(require(\"./shallowEqual\"));\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar pure = function pure(BaseComponent) {\n var hoc = (0, _shouldUpdate.default)(function (props, nextProps) {\n return !(0, _shallowEqual.default)(props, nextProps);\n });\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'pure'))(hoc(BaseComponent));\n }\n\n return hoc(BaseComponent);\n};\n\nvar _default = pure;\nexports.default = _default;","import { createElement, PureComponent } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n **/\n\nfunction createDetectElementResize(nonce) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof document !== 'undefined' && document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = document.createElement('fakeelement');\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n var elementStyle = _window.getComputedStyle(element);\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n element.__resizeTriggers__.innerHTML = '
' + '
';\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\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\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\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 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\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\nvar AutoSizer = function (_React$PureComponent) {\n inherits(AutoSizer, _React$PureComponent);\n\n function AutoSizer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = AutoSizer.__proto__ || Object.getPrototypeOf(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n }, _this._onResize = function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n var _height = _this._parentNode.offsetHeight || 0;\n var _width = _this._parentNode.offsetWidth || 0;\n\n var _style = window.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(_style.paddingRight, 10) || 0;\n var paddingTop = parseInt(_style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;\n\n var newHeight = _height - paddingTop - paddingBottom;\n var newWidth = _width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: _height - paddingTop - paddingBottom,\n width: _width - paddingLeft - paddingRight\n });\n\n onResize({ height: _height, width: _width });\n }\n }\n }, _this._setRef = function (autoSizer) {\n _this._autoSizer = autoSizer;\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n createClass(AutoSizer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disableHeight = _props.disableHeight,\n disableWidth = _props.disableWidth,\n style = _props.style;\n var _state = this.state,\n height = _state.height,\n width = _state.width;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = { overflow: 'visible' };\n var childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n var bailoutOnChildren = false;\n\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n }\n\n return createElement(\n 'div',\n {\n className: className,\n ref: this._setRef,\n style: _extends({}, outerStyle, style) },\n !bailoutOnChildren && children(childParams)\n );\n }\n }]);\n return AutoSizer;\n}(PureComponent);\n\nAutoSizer.defaultProps = {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n};\n\nexport default AutoSizer;\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.dayjs=e()}(this,function(){\"use strict\";var t=\"millisecond\",e=\"second\",n=\"minute\",r=\"hour\",i=\"day\",s=\"week\",u=\"month\",a=\"quarter\",o=\"year\",f=\"date\",h=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d+)?$/,c=/\\[([^\\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},$={s:d,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+d(r,2,\"0\")+\":\"+d(i,2,\"0\")},m:function t(e,n){if(e.date() 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n step = -step;\n start = Math.ceil(start * step);\n stop = Math.floor(stop * step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n\n return (bth[buf[i + 0]] + bth[buf[i + 1]] + bth[buf[i + 2]] + bth[buf[i + 3]] + '-' + bth[buf[i + 4]] + bth[buf[i + 5]] + '-' + bth[buf[i + 6]] + bth[buf[i + 7]] + '-' + bth[buf[i + 8]] + bth[buf[i + 9]] + '-' + bth[buf[i + 10]] + bth[buf[i + 11]] + bth[buf[i + 12]] + bth[buf[i + 13]] + bth[buf[i + 14]] + bth[buf[i + 15]]).toLowerCase();\n}\n\nexport default bytesToUuid;","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n if (typeof options === 'string') {\n buf = options === 'binary' ? new Uint8Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n var start = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[start + i] = rnds[i];\n }\n\n return buf;\n }\n\n return bytesToUuid(rnds);\n}\n\nexport default v4;","/** @license React v16.13.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;kb}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;dpc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;gzf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(gl&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;by?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;yy?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;cf))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(lN.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;hd.tailExpiration&&1b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTimea?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){awi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n handle();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n\n return handle;\n };\n};","'use strict';\nexports.test = function () {\n return true;\n};\n\nexports.install = function (t) {\n return function () {\n setTimeout(t, 0);\n };\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'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\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nvar Motion = (function (_React$Component) {\n _inherits(Motion, _React$Component);\n\n _createClass(Motion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyle: _propTypes2['default'].objectOf(_propTypes2['default'].number),\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired,\n children: _propTypes2['default'].func.isRequired,\n onRest: _propTypes2['default'].func\n },\n enumerable: true\n }]);\n\n function Motion(props) {\n var _this = this;\n\n _classCallCheck(this, Motion);\n\n _React$Component.call(this, props);\n this.wasAnimating = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyle = null;\n\n this.clearUnreadPropStyle = function (destStyle) {\n var dirty = false;\n var _state = _this.state;\n var currentStyle = _state.currentStyle;\n var currentVelocity = _state.currentVelocity;\n var lastIdealStyle = _state.lastIdealStyle;\n var lastIdealVelocity = _state.lastIdealVelocity;\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyle = _extends({}, currentStyle);\n currentVelocity = _extends({}, currentVelocity);\n lastIdealStyle = _extends({}, lastIdealStyle);\n lastIdealVelocity = _extends({}, lastIdealVelocity);\n }\n\n currentStyle[key] = styleValue;\n currentVelocity[key] = 0;\n lastIdealStyle[key] = styleValue;\n lastIdealVelocity[key] = 0;\n }\n }\n\n if (dirty) {\n _this.setState({ currentStyle: currentStyle, currentVelocity: currentVelocity, lastIdealStyle: lastIdealStyle, lastIdealVelocity: lastIdealVelocity });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // check if we need to animate in the first place\n var propsStyle = _this.props.style;\n if (_shouldStopAnimation2['default'](_this.state.currentStyle, propsStyle, _this.state.currentVelocity)) {\n if (_this.wasAnimating && _this.props.onRest) {\n _this.props.onRest();\n }\n\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.wasAnimating = false;\n _this.accumulatedTime = 0;\n return;\n }\n\n _this.wasAnimating = true;\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n\n for (var key in propsStyle) {\n if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) {\n continue;\n }\n\n var styleValue = propsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyle[key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocity[key];\n for (var i = 0; i < framesToCatchUp; i++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyle: newCurrentStyle,\n currentVelocity: newCurrentVelocity,\n lastIdealStyle: newLastIdealStyle,\n lastIdealVelocity: newLastIdealVelocity\n });\n\n _this.unreadPropStyle = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n Motion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyle = _props.defaultStyle;\n var style = _props.style;\n\n var currentStyle = defaultStyle || _stripStyle2['default'](style);\n var currentVelocity = _mapToZero2['default'](currentStyle);\n return {\n currentStyle: currentStyle,\n currentVelocity: currentVelocity,\n lastIdealStyle: currentStyle,\n lastIdealVelocity: currentVelocity\n };\n };\n\n // it's possible that currentStyle's value is stale: if props is immediately\n // changed from 0 to 400 to spring(0) again, the async currentStyle is still\n // at 0 (didn't have time to tick and interpolate even once). If we naively\n // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n // In reality currentStyle should be 400\n\n Motion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n Motion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyle != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyle);\n }\n\n this.unreadPropStyle = props.style;\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n Motion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n Motion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyle);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return Motion;\n})(_react2['default'].Component);\n\nexports['default'] = Motion;\nmodule.exports = exports['default'];\n\n// after checking for unreadPropStyle != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'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\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nfunction shouldStopAnimationAll(currentStyles, styles, currentVelocities) {\n for (var i = 0; i < currentStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], styles[i], currentVelocities[i])) {\n return false;\n }\n }\n return true;\n}\n\nvar StaggeredMotion = (function (_React$Component) {\n _inherits(StaggeredMotion, _React$Component);\n\n _createClass(StaggeredMotion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].objectOf(_propTypes2['default'].number)),\n styles: _propTypes2['default'].func.isRequired,\n children: _propTypes2['default'].func.isRequired\n },\n enumerable: true\n }]);\n\n function StaggeredMotion(props) {\n var _this = this;\n\n _classCallCheck(this, StaggeredMotion);\n\n _React$Component.call(this, props);\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _state = _this.state;\n var currentStyles = _state.currentStyles;\n var currentVelocities = _state.currentVelocities;\n var lastIdealStyles = _state.lastIdealStyles;\n var lastIdealVelocities = _state.lastIdealVelocities;\n\n var someDirty = false;\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i];\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n someDirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n }\n }\n }\n\n if (someDirty) {\n _this.setState({ currentStyles: currentStyles, currentVelocities: currentVelocities, lastIdealStyles: lastIdealStyles, lastIdealVelocities: lastIdealVelocities });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n var destStyles = _this.props.styles(_this.state.lastIdealStyles);\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n\n for (var i = 0; i < destStyles.length; i++) {\n var destStyle = destStyles[i];\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyles[i][key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n StaggeredMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n\n var currentStyles = defaultStyles || styles().map(_stripStyle2['default']);\n var currentVelocities = currentStyles.map(function (currentStyle) {\n return _mapToZero2['default'](currentStyle);\n });\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: currentStyles,\n lastIdealVelocities: currentVelocities\n };\n };\n\n StaggeredMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n StaggeredMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n this.unreadPropStyles = props.styles(this.state.lastIdealStyles);\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n StaggeredMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n StaggeredMotion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return StaggeredMotion;\n})(_react2['default'].Component);\n\nexports['default'] = StaggeredMotion;\nmodule.exports = exports['default'];\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400\n\n// after checking for unreadPropStyles != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","'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\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _mergeDiff = require('./mergeDiff');\n\nvar _mergeDiff2 = _interopRequireDefault(_mergeDiff);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\n// the children function & (potential) styles function asks as param an\n// Array, where each TransitionPlainStyle is of the format\n// {key: string, data?: any, style: PlainStyle}. However, the way we keep\n// internal states doesn't contain such a data structure (check the state and\n// TransitionMotionState). So when children function and others ask for such\n// data we need to generate them on the fly by combining mergedPropsStyles and\n// currentStyles/lastIdealStyles\nfunction rehydrateStyles(mergedPropsStyles, unreadPropStyles, plainStyles) {\n // Copy the value to a `const` so that Flow understands that the const won't\n // change and will be non-nullable in the callback below.\n var cUnreadPropStyles = unreadPropStyles;\n if (cUnreadPropStyles == null) {\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n return {\n key: mergedPropsStyle.key,\n data: mergedPropsStyle.data,\n style: plainStyles[i]\n };\n });\n }\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n for (var j = 0; j < cUnreadPropStyles.length; j++) {\n if (cUnreadPropStyles[j].key === mergedPropsStyle.key) {\n return {\n key: cUnreadPropStyles[j].key,\n data: cUnreadPropStyles[j].data,\n style: plainStyles[i]\n };\n }\n }\n return { key: mergedPropsStyle.key, data: mergedPropsStyle.data, style: plainStyles[i] };\n });\n}\n\nfunction shouldStopAnimationAll(currentStyles, destStyles, currentVelocities, mergedPropsStyles) {\n if (mergedPropsStyles.length !== destStyles.length) {\n return false;\n }\n\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (mergedPropsStyles[i].key !== destStyles[i].key) {\n return false;\n }\n }\n\n // we have the invariant that mergedPropsStyles and\n // currentStyles/currentVelocities/last* are synced in terms of cells, see\n // mergeAndSync comment for more info\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], destStyles[i].style, currentVelocities[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// core key merging logic\n\n// things to do: say previously merged style is {a, b}, dest style (prop) is {b,\n// c}, previous current (interpolating) style is {a, b}\n// **invariant**: current[i] corresponds to merged[i] in terms of key\n\n// steps:\n// turn merged style into {a?, b, c}\n// add c, value of c is destStyles.c\n// maybe remove a, aka call willLeave(a), then merged is either {b, c} or {a, b, c}\n// turn current (interpolating) style from {a, b} into {a?, b, c}\n// maybe remove a\n// certainly add c, value of c is willEnter(c)\n// loop over merged and construct new current\n// dest doesn't change, that's owner's\nfunction mergeAndSync(willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldLastIdealStyles, oldLastIdealVelocities) {\n var newMergedPropsStyles = _mergeDiff2['default'](oldMergedPropsStyles, destStyles, function (oldIndex, oldMergedPropsStyle) {\n var leavingStyle = willLeave(oldMergedPropsStyle);\n if (leavingStyle == null) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n if (_shouldStopAnimation2['default'](oldCurrentStyles[oldIndex], leavingStyle, oldCurrentVelocities[oldIndex])) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n return { key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data, style: leavingStyle };\n });\n\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyleCell = newMergedPropsStyles[i];\n var foundOldIndex = null;\n for (var j = 0; j < oldMergedPropsStyles.length; j++) {\n if (oldMergedPropsStyles[j].key === newMergedPropsStyleCell.key) {\n foundOldIndex = j;\n break;\n }\n }\n // TODO: key search code\n if (foundOldIndex == null) {\n var plainStyle = willEnter(newMergedPropsStyleCell);\n newCurrentStyles[i] = plainStyle;\n newLastIdealStyles[i] = plainStyle;\n\n var velocity = _mapToZero2['default'](newMergedPropsStyleCell.style);\n newCurrentVelocities[i] = velocity;\n newLastIdealVelocities[i] = velocity;\n } else {\n newCurrentStyles[i] = oldCurrentStyles[foundOldIndex];\n newLastIdealStyles[i] = oldLastIdealStyles[foundOldIndex];\n newCurrentVelocities[i] = oldCurrentVelocities[foundOldIndex];\n newLastIdealVelocities[i] = oldLastIdealVelocities[foundOldIndex];\n }\n }\n\n return [newMergedPropsStyles, newCurrentStyles, newCurrentVelocities, newLastIdealStyles, newLastIdealVelocities];\n}\n\nvar TransitionMotion = (function (_React$Component) {\n _inherits(TransitionMotion, _React$Component);\n\n _createClass(TransitionMotion, null, [{\n key: 'propTypes',\n value: {\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].number).isRequired\n })),\n styles: _propTypes2['default'].oneOfType([_propTypes2['default'].func, _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired\n }))]).isRequired,\n children: _propTypes2['default'].func.isRequired,\n willEnter: _propTypes2['default'].func,\n willLeave: _propTypes2['default'].func,\n didLeave: _propTypes2['default'].func\n },\n enumerable: true\n }, {\n key: 'defaultProps',\n value: {\n willEnter: function willEnter(styleThatEntered) {\n return _stripStyle2['default'](styleThatEntered.style);\n },\n // recall: returning null makes the current unmounting TransitionStyle\n // disappear immediately\n willLeave: function willLeave() {\n return null;\n },\n didLeave: function didLeave() {}\n },\n enumerable: true\n }]);\n\n function TransitionMotion(props) {\n var _this = this;\n\n _classCallCheck(this, TransitionMotion);\n\n _React$Component.call(this, props);\n this.unmounting = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _mergeAndSync = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, unreadPropStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var mergedPropsStyles = _mergeAndSync[0];\n var currentStyles = _mergeAndSync[1];\n var currentVelocities = _mergeAndSync[2];\n var lastIdealStyles = _mergeAndSync[3];\n var lastIdealVelocities = _mergeAndSync[4];\n\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i].style;\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n mergedPropsStyles[i] = {\n key: mergedPropsStyles[i].key,\n data: mergedPropsStyles[i].data,\n style: _extends({}, mergedPropsStyles[i].style)\n };\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n mergedPropsStyles[i].style[key] = styleValue;\n }\n }\n }\n\n // unlike the other 2 components, we can't detect staleness and optionally\n // opt out of setState here. each style object's data might contain new\n // stuff we're not/cannot compare\n _this.setState({\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n mergedPropsStyles: mergedPropsStyles,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities\n });\n };\n\n this.startAnimationIfNecessary = function () {\n if (_this.unmounting) {\n return;\n }\n\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // https://github.com/chenglou/react-motion/pull/420\n // > if execution passes the conditional if (this.unmounting), then\n // executes async defaultRaf and after that component unmounts and after\n // that the callback of defaultRaf is called, then setState will be called\n // on unmounted component.\n if (_this.unmounting) {\n return;\n }\n\n var propStyles = _this.props.styles;\n var destStyles = typeof propStyles === 'function' ? propStyles(rehydrateStyles(_this.state.mergedPropsStyles, _this.unreadPropStyles, _this.state.lastIdealStyles)) : propStyles;\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities, _this.state.mergedPropsStyles)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var _mergeAndSync2 = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, destStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var newMergedPropsStyles = _mergeAndSync2[0];\n var newCurrentStyles = _mergeAndSync2[1];\n var newCurrentVelocities = _mergeAndSync2[2];\n var newLastIdealStyles = _mergeAndSync2[3];\n var newLastIdealVelocities = _mergeAndSync2[4];\n\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyle = newMergedPropsStyles[i].style;\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in newMergedPropsStyle) {\n if (!Object.prototype.hasOwnProperty.call(newMergedPropsStyle, key)) {\n continue;\n }\n\n var styleValue = newMergedPropsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = newLastIdealStyles[i][key];\n var newLastIdealVelocityValue = newLastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities,\n mergedPropsStyles: newMergedPropsStyles\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n TransitionMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n var willEnter = _props.willEnter;\n var willLeave = _props.willLeave;\n var didLeave = _props.didLeave;\n\n var destStyles = typeof styles === 'function' ? styles(defaultStyles) : styles;\n\n // this is special. for the first time around, we don't have a comparison\n // between last (no last) and current merged props. we'll compute last so:\n // say default is {a, b} and styles (dest style) is {b, c}, we'll\n // fabricate last as {a, b}\n var oldMergedPropsStyles = undefined;\n if (defaultStyles == null) {\n oldMergedPropsStyles = destStyles;\n } else {\n oldMergedPropsStyles = defaultStyles.map(function (defaultStyleCell) {\n // TODO: key search code\n for (var i = 0; i < destStyles.length; i++) {\n if (destStyles[i].key === defaultStyleCell.key) {\n return destStyles[i];\n }\n }\n return defaultStyleCell;\n });\n }\n var oldCurrentStyles = defaultStyles == null ? destStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n });\n var oldCurrentVelocities = defaultStyles == null ? destStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n });\n\n var _mergeAndSync3 = mergeAndSync(\n // Because this is an old-style createReactClass component, Flow doesn't\n // understand that the willEnter and willLeave props have default values\n // and will always be present.\n willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldCurrentStyles, // oldLastIdealStyles really\n oldCurrentVelocities);\n\n var mergedPropsStyles = _mergeAndSync3[0];\n var currentStyles = _mergeAndSync3[1];\n var currentVelocities = _mergeAndSync3[2];\n var lastIdealStyles = _mergeAndSync3[3];\n var lastIdealVelocities = _mergeAndSync3[4];\n // oldLastIdealVelocities really\n\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities,\n mergedPropsStyles: mergedPropsStyles\n };\n };\n\n // after checking for unreadPropStyles != null, we manually go set the\n // non-interpolating values (those that are a number, without a spring\n // config)\n\n TransitionMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n TransitionMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n var styles = props.styles;\n if (typeof styles === 'function') {\n this.unreadPropStyles = styles(rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.lastIdealStyles));\n } else {\n this.unreadPropStyles = styles;\n }\n\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n TransitionMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounting = true;\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n TransitionMotion.prototype.render = function render() {\n var hydratedStyles = rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.currentStyles);\n var renderedChildren = this.props.children(hydratedStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return TransitionMotion;\n})(_react2['default'].Component);\n\nexports['default'] = TransitionMotion;\nmodule.exports = exports['default'];\n\n// list of styles, each containing interpolating values. Part of what's passed\n// to children function. Notice that this is\n// Array, without the wrapper that is {key: ...,\n// data: ... style: ActualInterpolatingStyleObject}. Only mergedPropsStyles\n// contains the key & data info (so that we only have a single source of truth\n// for these, and to save space). Check the comment for `rehydrateStyles` to\n// see how we regenerate the entirety of what's passed to children function\n\n// the array that keeps track of currently rendered stuff! Including stuff\n// that you've unmounted but that's still animating. This is where it lives\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400","\n\n// core keys merging algorithm. If previous render's keys are [a, b], and the\n// next render's [c, b, d], what's the final merged keys and ordering?\n\n// - c and a must both be before b\n// - b before d\n// - ordering between a and c ambiguous\n\n// this reduces to merging two partially ordered lists (e.g. lists where not\n// every item has a definite ordering, like comparing a and c above). For the\n// ambiguous ordering we deterministically choose to place the next render's\n// item after the previous'; so c after a\n\n// this is called a topological sorting. Except the existing algorithms don't\n// work well with js bc of the amount of allocation, and isn't optimized for our\n// current use-case bc the runtime is linear in terms of edges (see wiki for\n// meaning), which is huge when two lists have many common elements\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mergeDiff;\n\nfunction mergeDiff(prev, next, onRemove) {\n // bookkeeping for easier access of a key's index below. This is 2 allocations +\n // potentially triggering chrome hash map mode for objs (so it might be faster\n\n var prevKeyIndex = {};\n for (var i = 0; i < prev.length; i++) {\n prevKeyIndex[prev[i].key] = i;\n }\n var nextKeyIndex = {};\n for (var i = 0; i < next.length; i++) {\n nextKeyIndex[next[i].key] = i;\n }\n\n // first, an overly elaborate way of merging prev and next, eliminating\n // duplicates (in terms of keys). If there's dupe, keep the item in next).\n // This way of writing it saves allocations\n var ret = [];\n for (var i = 0; i < next.length; i++) {\n ret[i] = next[i];\n }\n for (var i = 0; i < prev.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(nextKeyIndex, prev[i].key)) {\n // this is called my TM's `mergeAndSync`, which calls willLeave. We don't\n // merge in keys that the user desires to kill\n var fill = onRemove(i, prev[i]);\n if (fill != null) {\n ret.push(fill);\n }\n }\n }\n\n // now all the items all present. Core sorting logic to have the right order\n return ret.sort(function (a, b) {\n var nextOrderA = nextKeyIndex[a.key];\n var nextOrderB = nextKeyIndex[b.key];\n var prevOrderA = prevKeyIndex[a.key];\n var prevOrderB = prevKeyIndex[b.key];\n\n if (nextOrderA != null && nextOrderB != null) {\n // both keys in next\n return nextKeyIndex[a.key] - nextKeyIndex[b.key];\n } else if (prevOrderA != null && prevOrderB != null) {\n // both keys in prev\n return prevKeyIndex[a.key] - prevKeyIndex[b.key];\n } else if (nextOrderA != null) {\n // key a in next, key b in prev\n\n // how to determine the order between a and b? We find a \"pivot\" (term\n // abuse), a key present in both prev and next, that is sandwiched between\n // a and b. In the context of our above example, if we're comparing a and\n // d, b's (the only) pivot\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n\n if (nextOrderA < nextKeyIndex[pivot] && prevOrderB > prevKeyIndex[pivot]) {\n return -1;\n } else if (nextOrderA > nextKeyIndex[pivot] && prevOrderB < prevKeyIndex[pivot]) {\n return 1;\n }\n }\n // pluggable. default to: next bigger than prev\n return 1;\n }\n // prevOrderA, nextOrderB\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n if (nextOrderB < nextKeyIndex[pivot] && prevOrderA > prevKeyIndex[pivot]) {\n return 1;\n } else if (nextOrderB > nextKeyIndex[pivot] && prevOrderA < prevKeyIndex[pivot]) {\n return -1;\n }\n }\n // pluggable. default to: next bigger than prev\n return -1;\n });\n}\n\nmodule.exports = exports['default'];\n// to loop through and find a key's index each time), but I no longer care","'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'] = spring;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _presets = require('./presets');\n\nvar _presets2 = _interopRequireDefault(_presets);\n\nvar defaultConfig = _extends({}, _presets2['default'].noWobble, {\n precision: 0.01\n});\n\nfunction spring(val, config) {\n return _extends({}, defaultConfig, config, { val: val });\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = reorderKeys;\n\nvar hasWarned = false;\n\nfunction reorderKeys() {\n if (process.env.NODE_ENV === 'development') {\n if (!hasWarned) {\n hasWarned = true;\n console.error('`reorderKeys` has been removed, since it is no longer needed for TransitionMotion\\'s new styles array API.');\n }\n }\n}\n\nmodule.exports = exports['default'];","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\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 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","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 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","/** 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","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","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 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","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 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 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","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","/**\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 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 * 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 assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\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 `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","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 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","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","/**\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 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 copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\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","/**\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 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 * 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 baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\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 * 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 memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar 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 (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\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 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","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 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","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","/** 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 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","/**\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","/**\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","/**\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","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar getDisplayName = function getDisplayName(Component) {\n if (typeof Component === 'string') {\n return Component;\n }\n\n if (!Component) {\n return undefined;\n }\n\n return Component.displayName || Component.name || 'Component';\n};\n\nvar _default = getDisplayName;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = require(\"react\");\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar mapProps = function mapProps(propsMapper) {\n return function (BaseComponent) {\n var factory = (0, _react.createFactory)(BaseComponent);\n\n var MapProps = function MapProps(props) {\n return factory(propsMapper(props));\n };\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'mapProps'))(MapProps);\n }\n\n return MapProps;\n };\n};\n\nvar _default = mapProps;\nexports.default = _default;","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","/**\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","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","/**\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","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 // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\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 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 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 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","/**\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","/**\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","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 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","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","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 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","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar pick = function pick(obj, keys) {\n var result = {};\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (obj.hasOwnProperty(key)) {\n result[key] = obj[key];\n }\n }\n\n return result;\n};\n\nvar _default = pick;\nexports.default = _default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","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 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 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","/**\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 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 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","/** Used to lookup unminified function names. */\nvar realNames = {};\n\nmodule.exports = realNames;\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 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","/** 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","/** 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 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","/**\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","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","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 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 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 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 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 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 `_.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","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","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","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 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","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\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 function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\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 exports.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 GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\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 define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.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 exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\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 exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\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 PromiseImpl.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 PromiseImpl.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.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(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 exports.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 exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.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 // Note: [\"return\"] must be used for ES3 parsing compatibility.\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 define(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 exports.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 exports.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 // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\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 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 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","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 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 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","/**\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","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` 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} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\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 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 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 * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar dateTag = '[object Date]';\n\n/**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\nfunction baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n}\n\nmodule.exports = baseIsDate;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _react = require(\"react\");\n\nvar _setDisplayName = _interopRequireDefault(require(\"./setDisplayName\"));\n\nvar _wrapDisplayName = _interopRequireDefault(require(\"./wrapDisplayName\"));\n\nvar shouldUpdate = function shouldUpdate(test) {\n return function (BaseComponent) {\n var factory = (0, _react.createFactory)(BaseComponent);\n\n var ShouldUpdate =\n /*#__PURE__*/\n function (_Component) {\n (0, _inheritsLoose2.default)(ShouldUpdate, _Component);\n\n function ShouldUpdate() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = ShouldUpdate.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return test(this.props, nextProps);\n };\n\n _proto.render = function render() {\n return factory(this.props);\n };\n\n return ShouldUpdate;\n }(_react.Component);\n\n if (process.env.NODE_ENV !== 'production') {\n return (0, _setDisplayName.default)((0, _wrapDisplayName.default)(BaseComponent, 'shouldUpdate'))(ShouldUpdate);\n }\n\n return ShouldUpdate;\n };\n};\n\nvar _default = shouldUpdate;\nexports.default = _default;","var _\t\t\t= require(\"underscore\");\n\n\n\n// Util: encoding\nvar simpleEncoding = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n// This function scales the submitted values so that\n// maxVal becomes the highest value.\nfunction simpleEncode(valueArray,maxValue) {\n\tvar chartData = ['s:'];\n\tfor (var i = 0; i < valueArray.length; i++) {\n\t\tvar currentValue = valueArray[i];\n\t\tif (!isNaN(currentValue) && currentValue >= 0) {\n\t\t\tchartData.push(simpleEncoding.charAt(Math.round((simpleEncoding.length-1) *\n\t\t\tcurrentValue / maxValue)));\n\t\t}\n\t\telse {\n\t\t\tchartData.push('_');\n\t\t}\n\t}\n\treturn chartData.join('');\n}\n\n// Same as simple encoding, but for extended encoding.\nvar EXTENDED_MAP= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-.';\nvar EXTENDED_MAP_LENGTH = EXTENDED_MAP.length;\n\nfunction extendedEncode(arrVals, maxVal) {\n\tvar chartData = 'e:';\n\n\tfor(i = 0, len = arrVals.length; i < len; i++) {\n\t\t// In case the array vals were translated to strings.\n\t\tvar numericVal = new Number(arrVals[i]);\n\t\t// Scale the value to maxVal.\n\t\tvar scaledVal = Math.floor(EXTENDED_MAP_LENGTH *\n\t\tEXTENDED_MAP_LENGTH * numericVal / maxVal);\n\n\t\tif(scaledVal > (EXTENDED_MAP_LENGTH * EXTENDED_MAP_LENGTH) - 1) {\n\t\t\tchartData += \"..\";\n\t\t} else if (scaledVal < 0) {\n\t\t\tchartData += '__';\n\t\t} else {\n\t\t\t// Calculate first and second digits and add them to the output.\n\t\t\tvar quotient = Math.floor(scaledVal / EXTENDED_MAP_LENGTH);\n\t\t\tvar remainder = scaledVal - EXTENDED_MAP_LENGTH * quotient;\n\t\t\tchartData += EXTENDED_MAP.charAt(quotient) + EXTENDED_MAP.charAt(remainder);\n\t\t}\n\t}\n\n\treturn chartData;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar google_image_chart = {\n\turl:\t\t\"https://chart.googleapis.com/chart\",\n\tbuild:\t\tfunction(params) {\n\t\tvar i;\n\t\tvar paramsArray = [];\n\t\tfor (i in params) {\n\t\t\tparamsArray.push(i+\"=\"+params[i]);\n\t\t}\n\t\treturn google_image_chart.url+\"?\"+paramsArray.join(\"&\");\n\t}\n};\n\n\n/* Candlestick */\ngoogle_image_chart.candlestick = function(options) {\n\tthis.options = _.extend({\n\t\twidth:\t\t800,\n\t\theight:\t\t200,\n\t\tvolume:\t\ttrue,\n\t\tspacing:\t2,\n\t\tautoscale:\ttrue\n\t},options);\n}\ngoogle_image_chart.candlestick.prototype.fromYahoo = function(data) {\n\tvar scope \t= this;\n\t\n\tthis.data \t= data;\n\tthis.n\t\t= data.length;\n\t\n\tvar prices = {\n\t\tl:\t[],\n\t\to:\t[],\n\t\tc:\t[],\n\t\th:\t[]\n\t};\n\tthis.chd \t= [];\n\t\n\t/*\n\t\tL\n\t\tO\n\t\tC\n\t\tH\n\t*/\n\t\t\n\t_.each(data, function(point) {\n\t\tprices.l.push(point.low);\n\t\tprices.o.push(point.open);\n\t\tprices.c.push(point.close);\n\t\tprices.h.push(point.high);\n\t});\n\tthis.min \t= _.min(prices.l);\n\tthis.max \t= _.max(prices.h);\n\t\n\t\n\t// Prepend and append -1 values, to have the chart with full candles, not crossing the Y axis\n\t\n\tprices.l.splice(0,0,-1);\n\tprices.o.splice(0,0,-1);\n\tprices.c.splice(0,0,-1);\n\tprices.h.splice(0,0,-1);\n\t\n\tprices.l.push(-1);\n\tprices.o.push(-1);\n\tprices.c.push(-1);\n\tprices.h.push(-1);\n\t\n\t\n\tthis.chd.push(prices.l.join(\",\"));\n\tthis.chd.push(prices.o.join(\",\"));\n\tthis.chd.push(prices.c.join(\",\"));\n\tthis.chd.push(prices.h.join(\",\"));\n\t\n}\ngoogle_image_chart.candlestick.prototype.render = function() {\n\tvar params = {};\n\t\n\tparams['cht'] = \"lc\";\n\tparams['chd'] = \"t0:\"+this.chd.join('|');\n\t\n\tparams['chs'] \t= this.options.width+\"x\"+this.options.height;\n\t\n\tparams['chm'] = \"F,,0,-1,\"+(Math.floor(this.options.width/this.n)*0.8);\n\t\n\tif (this.options.autoscale) {\n\t\tparams['chds'] \t= this.min+\",\"+this.max;\n\t\t//params['chxt'] \t= \"y\";\n\t\t//params['chxr'] \t= \"0,\"+this.min+\",\"+this.max+\",10\";\n\t}\n\t\n\treturn google_image_chart.build(params);\n}\n\n\n\n\n/* Bar (volume) */\ngoogle_image_chart.bar = function(options) {\n\tthis.options = _.extend({\n\t\twidth:\t\t800,\n\t\theight:\t\t200,\n\t\tvolume:\t\ttrue,\n\t\tspacing:\t2,\n\t\tautoscale:\ttrue\n\t},options);\n}\ngoogle_image_chart.bar.prototype.fromYahoo = function(data, key) {\n\tvar scope \t= this;\n\t\n\tthis.data \t= data;\n\tthis.n\t\t= data.length;\n\tvar points\t= [];\n\t\t\n\t_.each(data, function(point) {\n\t\tpoints.push(point[key]);\n\t});\n\t\n\tthis.min \t= _.min(points);\n\tthis.max \t= _.max(points);\n\t\n\t/*\n\t// Prepend and append -1 values, to have the chart with full candles, not crossing the Y axis\n\tpoints.splice(0,0,-1);\n\tpoints.push(-1);\n\t*/\n\t\n\tthis.chd = simpleEncode(points, this.max);\n\t\n}\ngoogle_image_chart.bar.prototype.render = function() {\n\tvar params = {};\n\t\n\tparams['cht'] \t= \"bvs\";\n\tparams['chco'] \t= \"76A4FB\";\n\tparams['chd'] \t= this.chd;\n\t\n\tparams['chs'] \t= this.options.width+\"x\"+this.options.height;\n\t\n\tparams['chbh'] = \"a\";\n\t\n\t\n\t/*\n\tif (this.options.autoscale) {\n\t\tparams['chds'] \t= this.min+\",\"+this.max;\n\t\tparams['chxt'] \t= \"y\";\n\t\tparams['chxr'] \t= \"0,\"+this.min+\",\"+this.max+\",10\";\n\t}\n\t*/\n\treturn google_image_chart.build(params);\n}\n\n\n\n\n/* Line (Indicators) */\ngoogle_image_chart.line = function(options) {\n\tthis.options = _.extend({\n\t\twidth:\t\t800,\n\t\theight:\t\t200,\n\t\tbands:\t\tfalse,\n\t\tautoscale:\ttrue,\n\t\thlines:\t\tfalse\t// Horizontal lines are a new serie, since Google Image doesn't support it...\n\t},options);\n\t\n\t\n\tthis.datasets\t= {};\n\tthis.chd \t\t= [];\n\tthis.chco\t\t= [];\n\t\n\tthis.min \t\t= 10000000000;\n\tthis.max \t\t= -10000000000;\n\t\n\t\n\t\n\tthis.rainbow \t= new Rainbow();\n\tthis.rainbow.setSpectrum(\"76A4FB\",\"E15393\");\n}\ngoogle_image_chart.line.prototype.fromYahoo = function(data) {\n\tvar scope \t= this;\n\t\n\tthis.data \t= data;\n\tthis.n\t\t= data.length;\n\t\n\tthis.datasets\t= {};\n\tthis.chd \t\t= [];\n\tthis.chco\t\t= [];\n\t\n\tvar prices\t\t= {\n\t\thigh:\t\"B61717\",\n\t\tlow:\t\"3283E4\",\n\t\t//open:\t\"A5E036\",\n\t\tclose:\t\"222222\"\n\t};\n\t\n\tfor (price in prices) {\n\t\tscope.datasets[price] = {\n\t\t\tdata:\t[],\n\t\t\tmin:\t0,\n\t\t\tmax:\t0\n\t\t};\n\t\t_.each(data, function(datapoint) {\n\t\t\tscope.datasets[price].data.push(datapoint[price]);\n\t\t});\n\t\t\n\t\tscope.datasets[price].min \t\t= _.min(scope.datasets[price].data);\n\t\tscope.datasets[price].max \t\t= _.max(scope.datasets[price].data);\n\t\t\n\t\t\n\t\t\n\t\tif (scope.datasets[price].min < scope.min) {\n\t\t\tscope.min = scope.datasets[price].min;\n\t\t}\n\t\tif (scope.datasets[price].max > scope.max) {\n\t\t\tscope.max = scope.datasets[price].max;\n\t\t}\n\t}\n\tfor (price in prices) {\n\t\t\n\t\tscope.chd.push(scope.datasets[price].data);\n\t\t\n\t\tscope.chco.push(prices[price]);\n\t}\n\t\n}\ngoogle_image_chart.line.prototype.fromTradeStudio = function(data) {\n\tvar scope \t\t= this;\n\t\n\tthis.data \t\t= data;\n\tthis.n\t\t\t= data.length;\n\t\n\t_.each(data, function(dataset) {\n\t\tscope.datasets[dataset.name] = {\n\t\t\tdata:\t[],\n\t\t\tmin:\t0,\n\t\t\tmax:\t0\n\t\t};\n\t\t_.each(dataset.data, function(datapoint) {\n\t\t\tscope.datasets[dataset.name].data.push(datapoint[1]);\n\t\t});\n\t\t\n\t\tscope.datasets[dataset.name].min \t\t= _.min(scope.datasets[dataset.name].data);\n\t\tscope.datasets[dataset.name].max \t\t= _.max(scope.datasets[dataset.name].data);\n\t\t\n\t\tif (scope.datasets[dataset.name].min < scope.min) {\n\t\t\tscope.min = scope.datasets[dataset.name].min;\n\t\t}\n\t\tif (scope.datasets[dataset.name].max > scope.max) {\n\t\t\tscope.max = scope.datasets[dataset.name].max;\n\t\t}\n\t});\n\t\n\t_.each(data, function(dataset) {\n\t\t\n\t\tscope.chd.push(scope.datasets[dataset.name].data);\n\t\tif (dataset.color) {\n\t\t\tscope.chco.push(dataset.color);\n\t\t} else {\n\t\t\tscope.chco.push(\"AUTO\");\n\t\t}\n\t});\n\t\n}\ngoogle_image_chart.line.prototype.fromTimeseries = function(data) {\n\tvar scope \t\t= this;\n\t\n\tthis.data \t\t= data;\n\tthis.n\t\t\t= data.length;\n\t\n\tvar name \t\t= _.uniqueId('chart_');\n\t\n\tscope.datasets[name] = {\n\t\tdata:\t[],\n\t\tmin:\t0,\n\t\tmax:\t0\n\t};\n\t_.each(data, function(datapoint) {\n\t\tscope.datasets[name].data.push(datapoint[1]);\n\t});\n\t\n\tscope.datasets[name].min \t\t= _.min(scope.datasets[name].data);\n\tscope.datasets[name].max \t\t= _.max(scope.datasets[name].data);\n\t\n\tif (scope.datasets[name].min < scope.min) {\n\t\tscope.min = scope.datasets[name].min;\n\t}\n\tif (scope.datasets[name].max > scope.max) {\n\t\tscope.max = scope.datasets[name].max;\n\t}\n\tscope.chd.push(scope.datasets[name].data);\n\t\n\tscope.chco.push(\"AUTO\");\n\t\n}\ngoogle_image_chart.line.prototype.fromArray = function(data) {\n\tvar scope \t\t= this;\n\t\n\tthis.data \t\t= data;\n\tthis.n\t\t\t= data.length;\n\tthis.datasets\t= {};\n\tthis.chd \t\t= [];\n\tthis.chco\t\t= [];\n\t\n\tthis.min \t\t= 10000000000;\n\tthis.max \t\t= -10000000000;\n\t\n\tvar c = 0;\n\t\n\t_.each(data, function(dataset, name) {\n\t\tc++;\n\t\tscope.datasets[name] = {\n\t\t\tdata:\t[],\n\t\t\tmin:\t0,\n\t\t\tmax:\t0\n\t\t};\n\t\t_.each(dataset, function(datapoint) {\n\t\t\tscope.datasets[name].data.push(datapoint);\n\t\t});\n\t\t\n\t\tscope.datasets[name].min \t\t= _.min(scope.datasets[name].data);\n\t\tscope.datasets[name].max \t\t= _.max(scope.datasets[name].data);\n\t\t\n\t\tif (scope.datasets[name].min < scope.min) {\n\t\t\tscope.min = scope.datasets[name].min;\n\t\t}\n\t\tif (scope.datasets[name].max > scope.max) {\n\t\t\tscope.max = scope.datasets[name].max;\n\t\t}\n\t});\n\t\n\t//console.log(\"Min\", scope.min);\n\t//console.log(\"Max\", scope.max);\n\t\n\tc = 0;\n\t_.each(data, function(dataset, name) {\n\t\tc++\n\t\tscope.chd.push(scope.datasets[name].data);\n\t\t\n\t\tif (dataset.color) {\n\t\t\tscope.chco.push(dataset.color);\n\t\t} else {\n\t\t\tscope.chco.push(\"AUTO\");\n\t\t\t//var color = scope.rainbow.colorAt(c);\n\t\t\t//scope.chco.push(color);\n\t\t}\n\t});\n\t\n\t\n}\ngoogle_image_chart.line.prototype.render = function() {\n\tvar scope = this;\n\t\n\tvar i;\n\t\n\tvar params = {};\n\t\n\tparams['cht'] \t= \"lc\";\n\t\n\tparams['chs'] \t= this.options.width+\"x\"+this.options.height;\n\t\n\tparams['chxt'] \t= \"y\";\n\t\n\t\n\t\n\t\n\tif (this.options.hlines) {\n\t\t// Add a new serie\n\t\t_.each(this.options.hlines, function(v) {\n\t\t\tvar i;\n\t\t\tscope.chd.push([v,v]);\n\t\t\tscope.chco.push(\"ABABAB\");\n\t\t});\n\t}\n\t\n\t// Encode the CHDs\n\t\n\tfor (i=0;i 1) {\n\t\t// Remove the extra \"s:\" from the encoded data\n\t\tfor (i=1;i minNumber) {\n\t\t\tminNum = minNumber;\n\t\t\tmaxNum = maxNumber;\n\t\t\tsetColours(colours);\n\t\t} else {\n\t\t\tthrow new RangeError('maxNumber (' + maxNumber + ') is not greater than minNumber (' + minNumber + ')');\n\t\t}\n\t}\n}\n\nfunction ColourGradient() \n{\n\tvar startColour = 'ff0000';\n\tvar endColour = '0000ff';\n\tvar minNum = 0;\n\tvar maxNum = 100;\n\n\tthis.setGradient = function (colourStart, colourEnd)\n\t{\n\t\tstartColour = getHexColour(colourStart);\n\t\tendColour = getHexColour(colourEnd);\n\t}\n\n\tthis.setNumberRange = function (minNumber, maxNumber)\n\t{\n\t\tif (maxNumber > minNumber) {\n\t\t\tminNum = minNumber;\n\t\t\tmaxNum = maxNumber;\n\t\t} else {\n\t\t\tthrow new RangeError('maxNumber (' + maxNumber + ') is not greater than minNumber (' + minNumber + ')');\n\t\t}\n\t}\n\n\tthis.colourAt = function (number)\n\t{\n\t\treturn calcHex(number, startColour.substring(0,2), endColour.substring(0,2)) \n\t\t\t+ calcHex(number, startColour.substring(2,4), endColour.substring(2,4)) \n\t\t\t+ calcHex(number, startColour.substring(4,6), endColour.substring(4,6));\n\t}\n\t\n\tfunction calcHex(number, channelStart_Base16, channelEnd_Base16)\n\t{\n\t\tvar num = number;\n\t\tif (num < minNum) {\n\t\t\tnum = minNum;\n\t\t}\n\t\tif (num > maxNum) {\n\t\t\tnum = maxNum;\n\t\t} \n\t\tvar numRange = maxNum - minNum;\n\t\tvar cStart_Base10 = parseInt(channelStart_Base16, 16);\n\t\tvar cEnd_Base10 = parseInt(channelEnd_Base16, 16); \n\t\tvar cPerUnit = (cEnd_Base10 - cStart_Base10)/numRange;\n\t\tvar c_Base10 = Math.round(cPerUnit * (num - minNum) + cStart_Base10);\n\t\treturn formatHex(c_Base10.toString(16));\n\t}\n\n\tformatHex = function (hex) \n\t{\n\t\tif (hex.length === 1) {\n\t\t\treturn '0' + hex;\n\t\t} else {\n\t\t\treturn hex;\n\t\t}\n\t} \n\t\n\tfunction isHexColour(string)\n\t{\n\t\tvar regex = /^#?[0-9a-fA-F]{6}$/i;\n\t\treturn regex.test(string);\n\t}\n\n\tfunction getHexColour(string)\n\t{\n\t\tif (isHexColour(string)) {\n\t\t\treturn string.substring(string.length - 6, string.length);\n\t\t} else {\n\t\t\tvar colourNames =\n\t\t\t[\n\t\t\t\t['red', 'ff0000'],\n\t\t\t\t['lime', '00ff00'],\n\t\t\t\t['blue', '0000ff'],\n\t\t\t\t['yellow', 'ffff00'],\n\t\t\t\t['orange', 'ff8000'],\n\t\t\t\t['aqua', '00ffff'],\n\t\t\t\t['fuchsia', 'ff00ff'],\n\t\t\t\t['white', 'ffffff'],\n\t\t\t\t['black', '000000'],\n\t\t\t\t['gray', '808080'],\n\t\t\t\t['grey', '808080'],\n\t\t\t\t['silver', 'c0c0c0'],\n\t\t\t\t['maroon', '800000'],\n\t\t\t\t['olive', '808000'],\n\t\t\t\t['green', '008000'],\n\t\t\t\t['teal', '008080'],\n\t\t\t\t['navy', '000080'],\n\t\t\t\t['purple', '800080']\n\t\t\t];\n\t\t\tfor (var i = 0; i < colourNames.length; i++) {\n\t\t\t\tif (string.toLowerCase() === colourNames[i][0]) {\n\t\t\t\t\treturn colourNames[i][1];\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new Error(string + ' is not a valid colour.');\n\t\t}\n\t}\n}\n\n\nexports.colors = Rainbow;","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n"],"sourceRoot":""}